Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 检测包启动android_Java_Android - Fatal编程技术网

Java 检测包启动android

Java 检测包启动android,java,android,Java,Android,我需要检测应用程序是否已启动,我已经了解到API中没有任何东西可以实现这一点。 有人建议给应用程序读取日志并继续轮询日志的权限,但这个解决方案在JB之后就不起作用了。 我还发现,由于我只需要知道顶级应用程序是否发生了更改,我可以执行以下操作: ActivityManager am = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE); String str = ((ActivityManager.RunningTaskInfo

我需要检测应用程序是否已启动,我已经了解到API中没有任何东西可以实现这一点。 有人建议给应用程序读取日志并继续轮询日志的权限,但这个解决方案在JB之后就不起作用了。 我还发现,由于我只需要知道顶级应用程序是否发生了更改,我可以执行以下操作:

ActivityManager am = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
String str = ((ActivityManager.RunningTaskInfo)am.getRunningTasks(1).get(0)).topActivity.getPackageName();

但我需要知道哪种方式是进行连续投票的最佳方式,当然,如果还有其他方式的话

您可以使用辅助功能服务
和caputure window change event

由于人们使用应用程序,并且人们需要时间阅读屏幕上的信息,因此前台应用程序的可视时间通常不超过几秒钟


如果您试图检测用户启动了哪些应用程序,然后使用每秒左右按您指示的方式轮询列表的后台服务,那么它应该工作正常,并且不会耗尽电池,因为一旦系统进入睡眠状态,轮询就会停止。

要澄清,您想检测是否启动了特定的活动,还是要检测所有活动的启动?另外,它是如何“启动”的是否重要?从主屏幕启动、从最近的应用程序启动或只是从堆栈中返回之间存在差异。@Geobits我的应用程序需要监视所有活动/应用程序启动,如果我能够检测到它们是从主屏幕启动还是从最近的应用程序启动,那就太好了。您有如何做到这一点的示例吗?谢谢