注意:我總是把這個設計放在腦海中,但從來沒有到過具體的測試(儘管它確實有效),所以如果你最終嘗試這個,告訴我它是怎麼回事。 :)
我不認爲有這麼會給你此功能(我可能是錯的)官方API方法,但你肯定可以構建自己的。這只是我的做法;當然可能會有更好的實現。
在您的應用程序中,您始終知道何時開始另一項活動。隨着中說,你可以創建處理開始的所有應用程序的活動,並保持當你開始一個活動,代表一個布爾軌道全局類:
public class GlobalActivityManager {
private static boolean isActivityStarting = true;
public static boolean isActivityStarting() {
return isActivityStarting;
}
public static void setIsActivityStarting(boolean newValue) {
isActivityStarting = newValue;
}
public static void startActivity(Activity previous, Class activityClass) {
isActivityStarting = true;
// Do stuff to start your activity
isActivityStarting = false;
}
}
在每個活動的
然後(也許是爲了這是一個超類),覆蓋onPause()
方法來檢查它是另一個應用程序的活動開始還是外部任務的應用程序出現在應用程序前面。這是有效的,因爲當活動前有任何內容時,onPause被執行,這意味着當你在GlobalActivityManager
開始活動時會調用onPause,其中isActivityStarting
爲真。
public void onPause() {
super.onPause();
if (GlobalActivityManager.isActivityStarting()) {
// It's one of your application's activities. Everything's normal.
} else {
// Some other task has come to the foreground. Do what needs to be done.
}
}
如果您能告訴我們檢測的目的是什麼,這可能會有幫助嗎? – EboMike 2010-07-23 03:40:13
基於這兩種情況,我的業務邏輯是不同的。後臺活動在後臺綁定到遠程服務。如果用戶實際上正在切換任務,我希望此背景活動解除綁定。否則,它需要保持綁定,以便將服務展示給我的應用中的其他活動。 – zer0stimulus 2010-07-23 13:23:32