1

是否有可能以某种方式监听 ActivityManager 的事件,例如,当活动开始时?ActivityManager 是否发送广播?我没有发现任何表明它确实如此的东西。

我基本上需要做的事情:我希望我的应用程序在某个(第三方)应用程序启动/获得焦点时启动我的一项活动。问题是这需要在第三方应用程序实际显示之前发生。

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

  1. Logcat 输出:我每 0.8 秒查询一次 logcat(过滤以仅显示 ActivityManager 事件),但这会占用很多资源
  2. getRunningTasks:也会大大降低手机速度并且不是很安全,因为活动可能正在运行但当前不在焦点中

有任何想法吗?

4

3 回答 3

0

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

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

于 2010-02-17T09:38:42.597 回答
0

我认为您可以使用启动模式来确定要启动哪个活动到顶层。请检查问题:Android singleTask 还是 singleInstance 启动模式?. 也许它会帮助你。

于 2012-05-12T07:46:56.043 回答
0

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

 (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);

ActivityManager.getRecentTasks() - 返回当前正在运行的任务列表,最近的任务排在第一位,旧任务排在后面。

有关详细信息,请查看文档

也许尽管 Android 是 Linux,但您可以运行系统工具,例如

Runtime.getRuntime().exec("ps -aux | grep smth")

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

于 2010-02-16T11:45:42.110 回答