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

Android之Activity生命周期詳細介紹

Android之Activity生命周期史無前例的詳細介紹,新手必必必看。

Android的Activity生命周期是一個非常重要的知識點,但是由於Activity的狀態眾多,而且狀態直接的切換類型也十分的眾多,導致Activity的方法很多,這就給新手學習並理解Activity造成了一定的難度,如果你能認真讀完我這一篇博文,那麼我相信你一定能對Activity的理解達到一個嶄新的高度,ok,下面是我對Activity的理解。


要想透徹的理解Activity,那麼必須了解一個計算機的名詞,“堆棧”,因為Activity的狀態切換方式十分類似於數據結構中的堆棧。

1、首先介紹什麼是堆棧,及其特點。

2、介紹Activity的七個狀態方法。

3、結合堆棧,詳解Activity狀態直接的切換和各個方法的調用。

1)、下面我來介紹一下什麼是“堆棧”。

        堆棧 可以簡單的理解成一個的 “竹筒”,只不過種竹筒是一端封閉另一端開啟的,如圖所示:

透過這個竹筒我們不難發現,因為堆棧的一端是封閉的,所以要想往裡面放東西,必須從一端放,取的時候也只能從一端取,就是這堆棧最重要的特點,“後進先出”。

2)、下面我要介紹的是Activity的七個狀態方法。

附官方文檔圖一張:

然後附我代碼一篇:

  1. package cn.blue.life;  
  2.   
  3. import android.app.Activity;  
  4. import android.content.Intent;  
  5. import android.os.Bundle;  
  6. import android.util.Log;  
  7. import android.view.View;  
  8. import android.view.View.OnClickListener;  
  9. import android.widget.Button;  
  10.   
  11. public class LifteActivity extends Activity {  
  12.     Button bt;  
  13.     protected void onCreate(Bundle savedInstanceState) {  
  14.         super.onCreate(savedInstanceState);  
  15.         this.setContentView(R.layout.main);  
  16.         bt=(Button) this.findViewById(R.id.bt);  
  17.         bt.setText("第一個activity");  
  18.         bt.setOnClickListener(new OnClickListener() {  
  19.             public void onClick(View v) {  
  20.                 Intent intent=new Intent(LifteActivity.this,LifteActivitySecond.class);  
  21.                 startActivity(intent);  
  22.             }  
  23.         });  
  24.         Log.i("Mytag","First----onCreate");  
  25.     }  
  26.     protected void onDestroy() {  
  27.         Log.i("Mytag","First----onDestroy");  
  28.         super.onDestroy();  
  29.     }  
  30.     protected void onPause() {  
  31.         Log.i("Mytag","First----onPause");  
  32.         super.onPause();  
  33.     }  
  34.     protected void onRestart() {  
  35.         Log.i("Mytag","First----onRestart");  
  36.         super.onRestart();  
  37.     }  
  38.     protected void onResume() {  
  39.         Log.i("Mytag","First----onResume");  
  40.         super.onResume();  
  41.     }  
  42.     protected void onStart() {  
  43.         Log.i("Mytag","First----onStart");  
  44.         super.onStart();  
  45.     }  
  46.     protected void onStop() {  
  47.         Log.i("Mytag","First----onStop");  
  48.         super.onStop();  
  49.     }  
  50. //  protected void onRestoreInstanceState(Bundle savedInstanceState) {   
  51. //      Log.i("Mytag","First----onRestoreInstanceState");   
  52. //      super.onRestoreInstanceState(savedInstanceState);   
  53. //  }   
  54. //  protected void onSaveInstanceState(Bundle outState) {   
  55. //      Log.i("Mytag","First----onSaveInstanceState");   
  56. //      super.onSaveInstanceState(outState);   
  57. //  }   
  58. }  

onCreate(Bundle savedInstanceState)
onStart()
onResume()
onPause()

onStop()

onDestroy()
onRestart()

onCreate(Bundle savedInstanceState)
Activity的初始化,也就是一個全新的Activity開始時,調用該方法
onStart()
Activity的啟動,當你能夠看到Activity時,啟動該方法,
onResume()
當Activity獲取用戶焦點將要與用戶交互時調用此方法,此時activity在activity棧的棧頂,用戶輸入已經可以傳遞給它
onPause()
當系統要啟動一個其他的activity時調用(其他的activity顯示之前),這個方法被用來提交那些持久數據的改變、停止動畫、和其他占用CPU資源的東西。由於下一個activity在這個方法返回之前不會resumed,所以實現這個方法時代碼執行要盡可能快。
如果activity重新回到前景時將調用onResume(), 如果對用戶徹底不可見則會調用onStop()。
onStop()
當另外一個activity恢復並遮蓋住此activity,導致其對用戶不再可見時調用。一個新activity啟動、其它activity被切換至前景、當前activity被銷毀時都會發生這種場景。
當activity重新回到前景與用戶交互時調用onRestart(),如果activity將退出則調用onDestory()。
onDestroy()
在你的activity被銷毀前所調用的最後一個方法,當進程終止時會出現這種情況
onRestart()
當activity從停止狀態重新啟動時調用。其後調用onResume()。

Copyright © Linux教程網 All Rights Reserved