我想记录用户每次使用的应用程序。我可以编写一个程序来保存手机上运行的进程,但我想知道哪一个是用户正在与之交互的进程。
答案 0 :(得分:2)
我不知道这是否是Chris在评论中提到的内容,我不知道它有多可靠,但您可以遍历ActivityManager#getRunningAppProcesses ()返回的列表:
public List<ActivityManager.RunningAppProcessInfo> getRunningAppProcesses ()
自:API Level 3
返回设备上运行的应用程序进程列表。
返回
RunningAppProcessInfo
个记录的列表,如果没有正在运行的进程,则返回null(它不会返回空列表)。未指定此列表排序。
然后,检查每个ActivityManager.RunningAppProcessInfo
的重要性字段:
public int importance
自:API Level 3
系统对此流程的相对重要性级别。可以是
IMPORTANCE_FOREGROUND
,IMPORTANCE_VISIBLE
,IMPORTANCE_SERVICE
,IMPORTANCE_BACKGROUND
或IMPORTANCE_EMPTY
中的一个。对这些常量进行编号,使“更重要”的值始终小于“不太重要”的值。
您可以每30秒左右进行一次服务轮询并记录这些值。
(顺便说一句,您想要查找IMPORTANCE_FOREGROUND
和IMPORTANCE_VISIBLE
)