收听ActivityManager事件?

时间:2010-02-16 10:37:49

标签: android android-activity logcat

是否有可能以某种方式监听ActivityManager的事件,例如什么时候开始活动? ActivityManager是否发送广播?我没有找到任何迹象表明它确实存在。

我基本上需要做的是:每当某个(第三方)应用启动/关注时,我希望我的应用启动我的一项活动。问题是这需要在第三方应用程序实际显示之前发生。

到目前为止我尝试过的解决方法:

  1. Logcat输出:我每0.8秒查询一次logcat(过滤后只显示ActivityManager事件)但这会占用很多资源
  2. getRunningTasks:手机速度慢了很多并且不太安全,因为某项活动可能正在运行,但当前没有关注焦点
  3. 有什么想法吗?

3 个答案:

答案 0 :(得分:0)

我认为实际上没有其他传统方法来处理glabal系统状态,只有

 (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);

ActivityManager.getRecentTasks() - 返回当前正在运行的任务列表,其中最新的任务是按顺序排列的第一个和更早的任务。

有关详情,请查看docs

也许虽然Android是Linux,但你可以运行像

这样的系统工具
Runtime.getRuntime().exec("ps -aux | grep smth")

但我认为很难检测出特定的java应用程序。

答案 1 :(得分:0)

我查看了android源代码,但似乎没有任何广播事件。

https://android.googlesource.com/platform/packages/providers/ApplicationsProvider

答案 2 :(得分:0)

我认为您可以使用启动模式来确定要启动到顶级的活动。请检查问题:Android singleTask or singleInstance launch mode?。也许它会帮助你。