理解Activity的生命周期對於我們去開發大的靈活的應用很有幫助,在Android系統中Activity作為Activity棧來被管理,當前活動的Activity處於棧頂,之前的不活動的Activity就會被壓入下面的稱為不活動的Activity,來進行等待,如果該Activity重新變成棧頂,就會被重新恢復活動的狀態;
看下自己畫的截圖:
1: Activity A正在運運行,然後又打開Activity B之後 Activity A就會退到棧的下一層,Activity B在棧頂.
2:如果用戶點擊後退按鈕進行返回,或者前台的Activity結束這裡(可以認為是正在運行的Activity B),此時該Activity就會被移除棧,直接被銷毀;然後站內的上一個Activity(這裡認為是Activity A)將會到棧頂,並且變成活動狀態: 如圖:
下面是代碼日志截圖:
3:接下來看下Activity生命周期中的四個重要狀態
活動狀態 -----> 在屏幕的最前面(也就是在棧頂),獲得焦點並且可見
暫停狀態 -----> 失去焦點,不過還是可見 例如:屏幕上面彈出來的Dialog
停止狀態 -----> 失去焦點,不可見
銷毀狀態 -----> 被系統銷毀
Activity 生命周期回調圖:
從上面的生命周期回調圖中,可以把生命中周期份以一下三個過程:
1:完整生命周期:Activity的完整生命周期自第一次調用onCreate()開始,直至調用onDestroy()為止。Activity在onCreate()中設置並且進行初始化,而在onDestroy()中釋放所有系統資源。
2:可見生命周期: Activity的可視生命周期自onStart()調用開始直到相應的onStop()調用結束。在此期間,用戶可以在屏幕上看到Activity,盡管它也許並不是位於前台或者也不與用戶進行交互。在這兩個方法之間,我們可以保留用來向用戶顯示這個Activity所需的資源。
3:前台可見生命周期: Activity的前台生命周期自onResume()調用起,至相應的onPause()調用為止。在此期間,Activity位於前台最上面並與用戶進行交互。Activity會經常在暫停和恢復之間進行狀態轉換
下面是Activity生命周期會進行回調的所有方法:
[java]
①:一個Activity的啟動順序:onCreate()--->onStart()--->onResume()
②:當先打開一個Activity的時候 第一個Activity先會調用onPause() ----然後第二個Activity調用onCreate()--->onStart()--->onResume()---->第一個Activity調用onStop();
③:返回到第一個Activity的時候 第二個Activity會先調用onPause()---->然後第一個Activity調用onRestart()--->onStart()--->onResume()---->第二個Activity接著調用onStop()——>onDestory();
下面來說說 Activity的onSaveInstanceState()和 onRestoreInstanceState()方法
如果我們需要在Activity銷毀前保存一些臨時性的數據,onPause()就比較可以進行數據的持久化的保存,此時我們可以使用onSaveInstanceState()和 onRestoreInstanceState()方法。只要重寫上面兩個方法,在這裡進行數據保存操作就OK了