1. 程式人生 > >Activity的生命週期

Activity的生命週期

Activity是由Activity棧進行管理,當來到一個新的Activity後,此Activity將被加入到Activity棧頂,之前的Activity位於此Activity底部。Activity一般意義上來講有四種狀態:

1、當Activity位於棧頂時,此時正好處於螢幕最前方,此時處於執行狀態。

2、當Activity失去了焦點但仍然對使用者可見(如棧頂的Activity是透明或者棧頂Activity並不是鋪滿整個手機螢幕),此時處於暫停狀態;

3、當Activity被其他Activity完全遮擋,此時此Activity對使用者不可見,此時處於停止狀態;

4、當Activity由於人為或系統原因被銷燬,此時處於銷燬狀態;

在每個不同的狀態階段,Android系統對Activity內相應的方法進行了回撥。因此,我們在程式中寫Activity時,一般都繼承Activity類並重寫相應的回撥方法。

圖中詳細的給出了Activity整個生命週期的過程,以及在不同的狀態期間相應的回撥方法。

1、Activity例項是由系統自動建立,並在不同的狀態期間回撥相應的方法。一個最簡單的完整的Activity生命週期會按照如下順序回撥:OnCreate -> onStart ->  onResume -> onPause -> onStop-> onDestory。

2、當執行onStart回撥方法時,Activity開始被使用者所見,一直到onStop之前,此階段Activity都是被使用者可見

3、當執行到OnResume回撥方法時,Activity可以響應使用者互動,一直到onPause方法之前此階段稱之為 foreground lifetime

在實際應用場景中,假設A Activity位於棧頂,此時使用者操作,從A Activity 跳轉到B Activity 。那麼對AB來說,具體會回撥那些生命週期中的方法呢?回撥方法的具體回撥順序又是怎麼樣呢?

開始時,A被例項化,執行的回撥有 A:OnCreate -> A:onStart -> A:onResume。

當用戶點選A中按鈕來到B,假設B全部遮擋住了A,將依次執行 A:onPause -> B:onCreate -> B:onStart-> B:onResume->A:onStop.

此時如果點選Back鍵,將依次執行B:onPause ->A: onRestart -> A: onStart ->A:onResume ->B:onStop -> B:onDestory.

至此,Activity棧中只有A,  此時如果按下Back鍵,系統返回到桌面並依次執行 A:onPause -> A:onStop -> A:onDestroy。

如果按下Home鍵主要區別在於是否會執行onDestroy。