如何知道其他应用何时开始启动?

可能重复:
Android:应用程序Protector应用程序如何工作?

如何在新应用程序开始启动时收到通知? 很清楚地说,我点击应用程序图标,应用程序开始启动,我想将我的服务设置为该事件的观察者(如果有的话)。 在应用推出之前是否有任何事件或某种方式可以知道?

如果我是你,我会通过调用来获取ActivityManager

getSystemService(Context.ACTIVITY_SERVICE) 

然后使用以下代码设置我的程序:

 private final static Handler updateHandler = new Handler(); private static long WAKEUP_INTERVAL = 10000; // 10secs? private Runnable periodicUpdate = new Runnable() { @Override public void run() { checkRunningProcesses(); updateHandler.postDelayed(this, WAKEUP_INTERVAL); } }; 

定期检查以下两件事:

  1. 检查getRecentTasks()以找出最近推出的用户( 要求获得GET_TASKS权限)
  2. 从getRunningAppProcesses()获取并保留正在运行的进程的某个列表,以防定期检查间隔选择得太长并且添加/删除了一些进程但未在getRecentTasks()中显示

通过这种方式,我无法获得有关程序启动的即时通知,但可以很快找到(稍后可能是几秒钟)来做一些事情。

还有一件事,在屏幕变暗时停止检查可能是明智的想法,以节省电池电量。

android监听应用程序启动

你不能用意图或类似的东西真正做到这一点。 看看这个家伙的暴力黑客。 不是一个很好的解决方案,但你会得到最接近的。