2015-06-04 24 views
0

我打算开发一个任务管理器应用程序。是否有可能知道另一个应用程序是在后台还是在前台?

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

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

+0

大家都在回答这是可能的,但我认为过去很适合确定哪个应用程序当前处于前台的方法已被弃用。 – JacksOnF1re

+0

@ JacksOnF1re:这些被弃用的方法是什么? – mrdaliri

+0

即getRecentTasks()自从api 21 L.以来已弃用。但我希望任何人都知道解决方法,真的。 – JacksOnF1re

回答

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); 
    } 
} 
+1

但是,如何确定哪个应用程序真的在前台? – JacksOnF1re

+0

即使它在后台模式下运行,我的应用程序也应该能够完成它的工作。所以我必须知道哪个应用程序在前台并且不要杀死他。 – mrdaliri

+0

@ JacksOnF1re请查看我编辑的答案为您的问题 – CrazyLearner

0

我已经使用了这个工具,它一直在做这个工作,需要API 14+,尽管 值得一提的是,使用ActivityManager在某些情况下失败了,比如force stop和类似的东西,再加上它没有提供具有回调一旦应用程序状态的效用已经改变

Here

+0

你从哪里获得另一个第三方应用程序的应用程序对象? – JacksOnF1re

+0

你是什么意思?只需将此文件复制到您的项目并使用您自己的应用程序对象 – elmorabea

+0

因此,此类只是检查我自己的应用程序的生命周期。我不认为这是你要求的。 – JacksOnF1re

0

随着活动管理的帮助下,我们可以得到其他应用程序的所有状态。

相关问题