2015-06-04 49 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

隨着活動管理的幫助下,我們可以得到其他應用程序的所有狀態。

相關問題