3

我想编写一个应用程序来记录我手机上其他应用程序的使用情况。
例如,我得到了我进入 Facebook 的时间。

我知道每次 Facebook 启动时都无法唤醒广播接收器。另一种方法是让服务始终在后台运行并检查正在运行的应用程序并每隔一秒左右进入睡眠状态,但我想这会更快耗尽我的电池。

那么最好的方法是什么?我可以查看某种日志吗?

4

1 回答 1

2

监视其他应用程序的唯一方法是监视前台活动。这会耗尽您的电池电量,但在启动其他应用程序时没有广播,因此没有其他方法可以做到这一点。您想启动一个检查当前前台活动的计时器任务。我强烈建议不要这样做。要获取当前的前台活动,请使用以下代码:

ActivityManager am = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);
List< ActivityManager.RunningTaskInfo > taskInfo = am.getRunningTasks(1); 
Log.d("topActivity", "CURRENT Activity ::"
            + taskInfo.get(0).topActivity.getClassName());
ComponentName componentInfo = taskInfo.get(0).topActivity;
componentInfo.getPackageName();

您将需要以下权限:

<uses-permission android:name="android.permission.GET_TASKS"/>
于 2013-07-13T10:04:42.220 回答