Android 收听ActivityManager事件?

Android 收听ActivityManager事件?,android,android-activity,logcat,Android,Android Activity,Logcat,是否可以以某种方式收听ActivityManager的事件,例如活动开始时?ActivityManager是否发送广播?我没有发现任何迹象表明它确实存在 我基本上需要做的是:每当某个(第三方)应用程序启动/聚焦时,我希望我的应用程序启动我的一项活动。问题是,这需要在第三方应用程序实际显示之前发生 到目前为止,我所尝试的解决方法是: Logcat输出:我每0.8秒查询一次Logcat(过滤后只显示ActivityManager事件),但这会消耗很多资源 getRunningTasks:手机运行速度

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

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

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

  • Logcat输出:我每0.8秒查询一次Logcat(过滤后只显示ActivityManager事件),但这会消耗很多资源
  • getRunningTasks:手机运行速度也慢了很多,而且不太安全,因为某个活动可能正在运行,但当前未处于焦点

  • 有什么想法吗?

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

     (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
    
    ActivityManager.getRecentTasks()-返回当前正在运行的任务的列表,最近的任务是第一个,后面的任务是较早的

    详情请查收

    也许,虽然Android是Linux,但您可以运行诸如

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

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

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


    我认为您可以使用启动模式来确定要启动到顶层的活动。请检查问题:。也许这会对你有所帮助。

    你能评论一下为什么你的应用程序需要在某些第三方应用程序之前启动吗?我的应用程序要求用户在允许启动第三方应用程序之前输入密码。你认为是否有可能更新Activitylauncher.java,使其能够在用户设备上进行广播并替换(显然只针对root用户)?我想这不会起作用,因为ROM的数字签名。