Android如何知道应用程序已启动并根据开始时间确定应用程序的优先级

在Android中,如何知道应用程序已经启动。 我想检测启动时安装的所有应用程序,并根据应用程序的使用时间确定应用程序的优先级。 是否有解决方案建议这样做?

我知道使用广播,但是当应用程序启动时,是否有一些Intent从ActivityManager发出,以及如何在代码中检测此Intent? 任何其他解决方案也是受欢迎的。

第一部分

如果您知道应用的套餐名称,请尝试此操作( 将以下代码段放在您应用的onCreate方法中 ):

ActivityManager am= (ActivityManager) this.getSystemService(ACTIVITY_SERVICE); 

然后,

  boolean exit = false; while(!exit) { List taskInfo = am.getRunningTasks(1); ComponentName componentInfo = taskInfo.get(0).topActivity; if(componentInfo.getPackageName().equals("Your package name")) { //Do your work here exit = true; } } 

当您启动应用程序时,它将被放入componentInfo中taskInfo.get(0).topActivity将返回前台中的活动。 因此,您可以通过使用第二个代码段比较包来了解您的应用已启动。

注意 :将第二个代码段放在Asynctask中,以便检查应用程序是否已启动可以在后台完成。

第二部分:

为了获得优先级,我认为你可以通过检查包含所有正在运行的应用程序的列表TaskInfo来实现。