歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Android中的Activity生命周期學習

作為Android中四大組件之一的Activity是最為重要的一個組件,今天學習了Activity的生命周期。

理解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]

  1. <span style="font-size:16px;">    // onCreate 當Activity第一次啟動的時候,回調這個方法,可以在此時完成Activity的一些初始化工作   
  2.     @Override  
  3.     protected void onCreate(Bundle savedInstanceState) {  
  4.         // TODO Auto-generated method stub   
  5.         super.onCreate(savedInstanceState);  
  6.     };  
  7.   
  8.     // 調用這個方法表示所屬的Activity將要被展現給用戶   
  9.     @Override  
  10.     protected void onStart() {  
  11.         super.onStart();  
  12.     }  
  13.   
  14.     // 當處於停止活動的狀態的Activity需要在線展現給用戶的時候,調用這個方法   
  15.     @Override  
  16.     protected void onRestart() {  
  17.         super.onRestart();  
  18.     }  
  19.   
  20.     // 當Activity和用戶發生交互的時候調用這個方法   
  21.     @Override  
  22.     protected void onResume() {  
  23.         super.onResume();  
  24.     }  
  25.   
  26.     // 當當前的Activity失去焦點,不過依然可見,例如彈出一個對話框的時候   
  27.     // 如果我們需要保存數據,可以在這個狀態進行保存   
  28.     @Override  
  29.     protected void onPause() {  
  30.         super.onPause();  
  31.     }  
  32.   
  33.     // 當一個Activity不再需要展示給用戶的時候,注意一點:如果系統資源不夠的時候   
  34.     // 系統會直接結束這個方法,就是不會調用這個方法,   
  35.     @Override  
  36.     protected void onStop() {  
  37.         super.onStop();  
  38.     }  
  39.   
  40.     // 當銷毀Activity的時候,調用   
  41.     @Override  
  42.     protected void onDestroy() {  
  43.         super.onDestroy();  
  44.     }</span><span style="font-size: 14pt;">  
  45. </span>  

①:一個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了

Copyright © Linux教程網 All Rights Reserved