【发布时间】:2014-01-02 01:27:58
【问题描述】:
在 Android 中,如何知道应用程序已启动。我想检测启动时安装的所有应用程序,并根据其使用时间确定应用程序的优先级。有没有建议这样做的解决方案?
我知道使用广播,但是当应用程序启动时是否有一些 Intent 从 ActivityManager 发出,以及如何在代码中检测这个 Intent?也欢迎任何其他解决方案。
【问题讨论】:
标签: java android android-layout android-intent
在 Android 中,如何知道应用程序已启动。我想检测启动时安装的所有应用程序,并根据其使用时间确定应用程序的优先级。有没有建议这样做的解决方案?
我知道使用广播,但是当应用程序启动时是否有一些 Intent 从 ActivityManager 发出,以及如何在代码中检测这个 Intent?也欢迎任何其他解决方案。
【问题讨论】:
标签: java android android-layout android-intent
第一部分:
如果你知道你应用的包名,试试这个(把下面的 sn-p 放在你应用的 onCreate 方法中):
ActivityManager am= (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);
那么,
boolean exit = false;
while(!exit)
{
List<RunningTaskInfo> 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 将返回前台的活动。因此,您可以通过使用第二个代码 sn-p 比较包来知道您的应用程序已启动。
注意:将第二个代码sn-p放在一个Asynctask中,这样就可以在后台检查应用是否已经启动 em>。
第二部分:
要获得优先级,我认为您可以通过检查列表 TaskInfo 来做到这一点,该列表将包含所有正在运行的应用程序。
【讨论】: