Activity生命週期中的各種狀態,即針對Activity跳轉、鎖屏、home鍵等操作對Activity狀態轉化的影響。
Activity在一個完整的生命週期中會有4中狀態(摘自《Android 4 高級編程(第3版)》):
1、活動狀態:Activity位於Activity棧的棧頂,它是可見的、具有焦點的前台Activity,這時它可以接受用戶輸入。1、啟動Activity,進入活動狀態:系統會先調用onCreate()方法,然後調用onStart()方法,最後調用onResume()方法,Activity進入運行狀態(活動狀態)。
2、當前Activity被其他Activity覆蓋其上(但該Activity仍然可見),進入暫停狀態:系統會調用onPause()方法,暫停當前Activity的執行,Activity進入暫停狀態。
3、當前Activity由暫停狀態回到活動狀態:系統會調用onResume()方法,Activity恢復到活動狀態。
例如back掉覆蓋在當前Activity上面的透明或非全屏的Activity後,當前的Activity會回到活動狀態。
(1)、當前Activity跳轉到新的Activity界面;
(2)、按Home鍵回到主屏;
(3)、按鎖屏鍵。
這3中情況中,當前Activity退居後台,而且均不可見,該狀態轉化過程中,系統會先調用onPause()方法,然後調用onStop()方法,當前Activity進入停止狀態。
這3中情況中Activity狀態轉化一樣,都是從停止狀態恢復到運行狀態,Activity先調用onRestart()方法,然後調用onStart()方法,最後調用onResume()方法。
6、Activity進入非活動狀態,系統先調用onPause()方法,然後調用onStop()方法,最後調用onDestory()方法,結束當前Activity。此時的Activity已經從Activity棧中移除了,因此,在它們可以被重新顯示和使用之前,需要被重新啟動。有兩種情況會使Activity進入非活動狀態:
(1)、用戶主動退出當前Activity:例如按Back鍵,或者清除內存進程(有時onDestrory()方法不一定會執行)。
(2)、當前Activity處於暫停(被覆蓋)狀態或者停止狀態(不可見),即第2步和第4步,系統內存不足,kill掉了當前的Activity。該情況是我們不可控的,處於暫停狀態的Activity只有在極端情況下才會被系統主動終止。
7、Activity進由非活動狀態進入活動狀態:
當前Activity處於非活動狀態,而後用戶退回、或者主屏點擊圖標返回、或者解鎖屏返回到當前Activity:需要重新開始生命週期,再次調用onCreate()方法、onStart()方法、onResume()方法,進入運行狀態。
注意:以上是三星S4(Android 4.2.2)真機測試後的總結,模擬器或者其他Android版本中,Activity跳轉、鎖屏、home鍵等操作對Activity狀態轉化的影響沒有經過測試,不知是否會有所差異,有興趣的可以找個低版本的測試一下。
歡迎光臨 TShopping (http://www.tshopping.com.tw/) | Powered by Discuz! X3.2 |