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来实现。