是否可以知道另一个应用程序是在后台还是前台?

时间:2015-06-04 10:36:24

标签: android android-intent

我要开发一个任务管理器应用程序。

但在开始之前,我想知道我的应用程序是否可以检测其他应用程序状态?例如,他们是在运行背景还是在前台?

Android系统是否提供了一些方法来确定这个?

3 个答案:

答案 0 :(得分:0)

我使用过这个实用程序并且它总是完成这项工作,但需要API 14+ 值得一提的是,在某些情况下使用ActivityManager会失败,例如强制停止和类似的东西,而且它确实提供了在应用程序状态发生变化后进行回调的实用程序

Here

答案 1 :(得分:0)

首先,AFAIK,一次只有一个应用程序可以处于前台模式。这意味着,如果您运行应用程序(任务管理器),它将处于前台模式,并且正在运行的其他应用程序将处于后台模式,直到它们被杀死。因此,您不必列出前台应用程序列表。

要运行(当前应用程序位于前台,其他应用程序位于后台)应用程序列表,您可以使用以下代码:

ActivityManager actvityManager = (ActivityManager)
this.getSystemService( ACTIVITY_SERVICE );
List<RunningAppProcessInfo> procInfos = actvityManager.getRunningAppProcesses();

然而,要了解哪个应用程序位于前台,您可以在上述代码后使用以下代码:

for(RunningAppProcessInfo appProcess : appProcesses){
    if(appProcess.importance == RunningAppProcessInfo.IMPORTANCE_FOREGROUND){
        Log.i("Foreground App", appProcess.processName);
    }
}

答案 2 :(得分:0)

ACTIVITY MANAGER 的帮助下,我们可以获得其他应用的所有状态。