歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android之Activity生命周期詳細介紹

Android之Activity生命周期詳細介紹

日期:2017/3/1 10:49:30   编辑:Linux編程

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

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