Java 如何知道另一个应用程序何时开始启动?

Java 如何知道另一个应用程序何时开始启动?,java,android,Java,Android,可能重复: 新应用程序启动时如何通知我?很明显,我点击应用程序图标,应用程序开始启动,我想将我的服务设置为该事件的观察者(如果有)。在应用程序启动之前,是否有任何事件或方法可以知道这一点 你不可能真的故意这么做。看看这家伙的野蛮黑客。这不是一个很好的解决方案,但却是最接近您的解决方案。如果我是您,我会打电话给 getSystemService(Context.ACTIVITY_SERVICE) 然后使用以下代码设置我的程序: private final static Handler upd

可能重复:

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


你不可能真的故意这么做。看看这家伙的野蛮黑客。这不是一个很好的解决方案,但却是最接近您的解决方案。

如果我是您,我会打电话给

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);
    }
};
定期检查以下两件事:

  • 检查以了解最近启动的用户(请求权限)
  • 从某处获取并保留正在运行的进程列表,以防选择的定期检查间隔太长,并且某些进程被添加/删除,但未显示在getRecentTasks()中
  • 这样,我就无法得到关于程序启动的即时通知,但可以很快(可能几秒钟后)找到相关信息,以便对此采取措施


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

    在onCreate()方法中,您可以进行编码并将所需信息发送到您想要的地方,这就是我所说的。:)但是,怎样才能进入应用程序的这种方法呢?o、 Oi什么都没有,只有那个事件的监听者(如果有)我真的需要知道关于那个的信息,我根据用户制作了关于中断应用的应用服务,但没有指南或代码来通知新应用何时开始启动这里有一些问题,所以,寻找它们。在这个动作之后\u程序包\u第一次\u启动,该应用程序是否继续启动或等待回调?您缺少答案。答案是使用链接问题部分中的代码创建服务。行动包首次发布对您没有任何帮助。此外,此解决方案将迅速耗尽使用此应用程序的任何人的电池电量。我相信这将是一个足够的排水管让人们考虑卸载。我认为在这种方式。在我的应用程序服务安装在设备上,应用程序需要重新启动电话。任何应用程序(系统应用程序除外)开始启动时(第一次)都会调用ACTION\u PACKAGE\u FIRST\u LAUNCH,我会检查该应用程序是否在阻止列表中,然后如果我可以中止该过程,我会中止。如果你不想听别人告诉你解决问题的方法,那你为什么这样做?您希望您的服务如何在重新启动过程中保持不变?这是个坏主意。您不想因为各种原因而终止android中的进程。当另一个应用程序启动时,没有任何句柄供您编程是有原因的……这很糟糕。我倾听人们的意见,但我相信这个问题一定有解决办法。但似乎我必须找到另一条路