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

时间:2012-04-17 16:16:59

标签: java android

  

可能重复:
  Android:how does application Protector app works?

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

2 个答案:

答案 0 :(得分:1)

如果我是你,我会打电话给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()中显示
  3. 通过这种方式,我无法获得有关程序启动的即时通知,但很快就可以找到相关信息(可能是几秒钟之后)。

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

答案 1 :(得分:0)

android listen for app launch

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