2011-06-03 151 views
6

我的問題是我可以知道整個應用程序何時暫停/恢復開始/停止等。 例如,如果我在我的應用程序中有5個活動。每當任何活動被暫停/恢復時,android都會通過調用onPause/onResume方法來通知活動。應用程序暫停/恢復狀態

因此,當我的活動暫停時,有兩種可能的情況。 1.我的activity-2被暫停,因爲我的activity-3被調用。 2.我的活動-2由於來電等外部活動而暫停。

在這裏,我只關注當我的活動被外部活動暫停而不是我自己的應用程序活動時。

那麼有沒有任何android提供的解決方案,或者我必須寫我的定製解決方案。

感謝 Dalvin

回答

10

沒有通過,因爲它提供的API解決方案在大多數情況下不需要。

你可以做的是創建一個抽象活動,並讓所有活動繼承自這個抽象活動。 在這個抽象活動中,通過覆蓋onCreate,onResume,onPause,onDestroy,您可以設法計算您自己的活動中有多少活動「活着」,然後確定您的應用程序的狀態。

這可以工作,但它不是真正的Android的哲學思想

+2

如果您的應用程序打開其他應用程序(例如相機或電子郵件),則這不起作用。你必須逐案做到這一點。 – SXC 2014-01-06 19:33:27

3

可以知道application.oncreate()整個應用程序的開始,但有整個應用程序的暫停沒有指示器。無論如何,大多數情況下永遠不需要它。

因此在活動lifecycleapplication類中進一步閱讀。

你仍然可以通過在每類中重寫的onPause做你的程序這個選項並保存價值的sharedPrefrences那麼這個值檢查所有在應用

3

如果我理解你的問題,你希望你的應用能夠程序的範圍內或像一個外部事件退出當前活動來區分一個電話。 (1)在SharedPreferences(用於存儲程序數據的內置文件)中設置一個值,然後使用以下方法創建一個值: 。稱之爲「exitStatus」,它在程序代碼中設置爲1,而基於外部事件的設置爲0。 (2)現在,在每個活動中,在onResume中將exitStatus的值設置爲0(無論您如何輸入,都會調用此值)。如果您的程序由於該活動中的外部事件而退出,則在程序重新加載時該值將保持不變。

(3)在活動結束時,在您要轉移到其他活動的所有點上,首先將exitStatus設置爲1.然後,當您到達其他活動時,它會知道您已到達那裏從你的程序中。 (4)因此,爲了清楚起見,您的每項活動都可以從一開始就檢查exitStatus,以查看您是從程序上下文(= 1)還是在某種非本地退出之後進入( = 0)。

就是這樣。我使用這種方法來確保我的應用程序的加載數據存在,因爲如果用戶關閉他們的設備,以便應用程序在稍後重新啓動等時嘗試提取內容,則可能會丟失數據。

0

而不是讓基地的活動,並重寫的onPause /的的onResume可以使用

registerActivityLifecycleCallbacks(Application.ActivityLifecycleCallbacks callback) 

在那裏你可以在一個地方辦理申請活動這些狀態。