如何开发一个可以跟踪所有其他应用程序使用情况的应用程序?

How to develop an app that can track the usage of all other apps?

我需要能够为 pre-5.0 Android 设备执行此操作。任何人都可以帮助我如何开始这样做吗?我在整个 Stack Overflow 中搜索了可能的解决方案,最有前途的提供了来自工作应用程序的大量代码,但在修复了一些错误以使应用程序不会崩溃后,当服务为 运行 时,只有一个空白出现白屏,没有别的,所以我决定放弃它。是否有任何可用资源可以帮助我完成此任务?谢谢!

要在 pre-5.0 上获取当前 运行 应用程序,您可以轮询 ActivityManager:

ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningTaskInfo> tasks = am.getRunningTasks(Integer.MAX_VALUE);
ActivityManager.RunningTaskInfo task = tasks.get(0);

String pkg = task.topActivity.getPackageName();

您必须记录此信息以衡量在应用上花费的时间。

现在您可能想使用计时器定期执行此操作:

new Timer().schedule(new TimerTask() {
    @Override
    public void run() {
        // Poll ActivityManager
    }
}, 250, 250); // Runs every 250 ms.

顺便说一下,ScheduledExecutorService 会更好,但计时器也可以。

现在您想在服务中创建它:

public class MyService extends Service {

    @Override
    public void onCreate() {
        // Create TimerTask here
    }

    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }
}

您必须在清单中注册此服务:

<service android:name=".MyService" />

最后,您可以在 activity:

中明确启动它
startService(new Intent(context, ServiceSystemControl.class));

这就是您所需要的!您需要跟踪最热门的应用,并统计 运行 在设备上的所有内容上花费的时间。

要改进这一点,您可以让服务注册一个持久通知,这样系统就不会在内存不足时终止它。