Android的活動週期

活動的生命週期對任何 Android 開發者來講都很是重要,當你深刻理解活動的生命 週期以後,就能夠寫出更加連貫流暢的程序,並在如何合理管理應用資源方面,你會發揮的 遊刃有餘。 數據結構

1.返回棧 ,Android 中的活動是能夠層疊的。 咱們每啓動一個新的活動,就會覆蓋在原活動之上,而後點擊 Back 鍵會銷燬最上面的活動, 下面的一個活動就會從新顯示出來。其實 Android 是使用任務(Task)來管理活動的,一個任務就是一組存放在棧裏的活動 的集合,這個棧也被稱做返回棧(Back Stack)。棧是一種後進先出的數據結構,在默認狀況 下,每當咱們啓動了一個新的活動,它會在返回棧中入棧,並處於棧頂的位置。而每當咱們 按下 Back 鍵或調用 finish()方法去銷燬一個活動時,處於棧頂的活動會出棧,這時前一個入 棧的活動就會從新處於棧頂的位置。系統老是會顯示處於棧頂的活動給用戶 。spa

2.每一個活動在其生命週期中最多可能會有四種狀態 ,運行狀態 當一個活動位於返回棧的棧頂時,這時活動就處於運行狀態。暫停狀態 當一個活動再也不處於棧頂位置,但仍然可見時,這時活動就進入了暫停狀態。 中止狀態 當一個活動再也不處於棧頂位置,而且徹底不可見的時候,就進入了中止狀態。 銷燬狀態 當一個活動從返回棧中移除後就變成了銷燬狀態。系統會最傾向於回收處於這種狀 態的活動,從而保證手機的內存充足。 生命週期

3.活動的生存期 ,Activity 類中定義了七個回調方法,覆蓋了活動生命週期的每個環節,onCreate() 它會在活動 第一次被建立的時候調用。你應該在這個方法中完成活動的初始化操做,好比說加載布 局、綁定事件等。onStart() 這個方法在活動由不可見變爲可見的時候調用。onResume() 這個方法在活動準備好和用戶進行交互的時候調用。此時的活動必定位於返回棧的棧頂,而且處於運行狀態。onPause() 這個方法在系統準備去啓動或者恢復另外一個活動的時候調用。咱們一般會在這個方 法中將一些消耗 CPU 的資源釋放掉,以及保存一些關鍵數據,但這個方法的執行速度 必定要快,否則會影響到新的棧頂活動的使用。onStop() 這個方法在活動被銷燬以前調用,以後活動的狀態將變爲銷燬狀態。onRestart() 這個方法在活動由中止狀態變爲運行狀態以前調用,也就是活動被從新啓動了。七個方法中除了 onRestart()方法,其餘都是兩兩相對的,從而又能夠將活動分爲三 種生存期。完整生存期活動在 onCreate()方法和 onDestroy()方法之間所經歷的,就是完整生存期。 可見生存期 活動在 onStart()方法和 onStop()方法之間所經歷的,就是可見生存期。前臺生存期 活動在 onResume()方法和 onPause()方法之間所經歷的,就是前臺生存期。 事件

4.Activity 中還提供了一個 onSaveInstanceState()回調方法,這 個方法會保證必定在活動被回收以前調用,所以咱們能夠經過這個方法來解決活動被回收時 臨時數據得不到保存的問題。onSaveInstanceState()方法會攜帶一個 Bundle 類型的參數,Bundle 提供了一系列的方法 用於保存數據,好比可使用 putString()方法保存字符串,使用 putInt()方法保存整型數據, 以此類推。每一個保存方法須要傳入兩個參數,第一個參數是鍵,用於後面從 Bundle 中取值, 第二個參數是真正要保存的內容。 內存

相關文章
相關標籤/搜索