markdown
#說明
這篇說明Activity 生命週期運轉的,並且列舉例子對應個週期,幫助理解。
#概念舉例解釋
1. Activity 生命週期圖
圖片來源 http://developer.android.com 生命週期可以分成以下幾個部分: - Create - Started - Resumed - Pause - Stopped - Destroyed 每個部分都是一種狀態,狀態間的連接是靠幾個重要 function 觸發 2.Create
這個狀態是當我們在點選螢幕上應用程式圖示的那個當下,就是呼叫 Create 3.Started(vidible) 上面 onCreate 觸發後,由 onStart 接力,使得頁面變成可視化,並將這些介面中的按鈕元件初始化 4.Resumed(vidible)
這個是程式開啟後到第一個畫面時,這邊是舉例點選了 BMI APP,到達畫面這時候的狀態就是 Resumed,也就是應用程式持續運行狀態,直到被其他事件暫停或是中斷 5.Pause(partially visible)
觸發 onPause 狀態可以是使用者下拉上方工具列使得畫面呈現部分可視
觸發 onPause 狀態也可以是使用者有來電,此時會進入暫停狀態 6.Stopped(hidden) 接著如果使用者點選接聽來電,會進入 stopped狀態,原本的頁面會被全部隱藏,並且釋放出手機的資源例如記憶體 7.Destroyed 使用者終止應用程式,則會觸發onDestroy ,也就是關閉程式,釋放出資源 ***以上就是Activity 的生命週期,光是看圖覺得難,跟著實際經驗想一次,就可以想像了!*** #操作驗證 ***上述的概念用一個程式的執行,顯示各種狀態*** 1.先複寫方法
移動游標到圖片中的1,按下 Ctrl+o,顯示選單,選取 onStart、onStop、onDestroy、onPause、onResume(複數選取按住Ctrl) 2.自動生成片段程式碼
3.加入浮動顯示
onStart、onStop、onDestroy、onPause、onResume 加入浮動顯示 ``` @Override protected void onStart() { super.onStart(); Toast.makeText(this,"onStart",Toast.LENGTH_LONG).show(); } @Override protected void onStop() { super.onStop(); Toast.makeText(this,"OnStop",Toast.LENGTH_LONG).show(); } @Override protected void onDestroy() { super.onDestroy(); Toast.makeText(this,"onDestroy",Toast.LENGTH_LONG).show(); } @Override protected void onPause() { super.onPause(); Toast.makeText(this,"onPause",Toast.LENGTH_LONG).show(); } @Override protected void onResume() { super.onResume(); Toast.makeText(this,"onResume",Toast.LENGTH_LONG).show(); } ```
OnCreate 加入浮動顯示 ``` Toast.makeText(this,"OnCreate",Toast.LENGTH_LONG).show(); ``` 4.完成示意圖
5.Demo
參考 https://www.youtube.com/watch?v=iely6CGR8nY
圖片來源 http://developer.android.com 生命週期可以分成以下幾個部分: - Create - Started - Resumed - Pause - Stopped - Destroyed 每個部分都是一種狀態,狀態間的連接是靠幾個重要 function 觸發 2.Create
這個狀態是當我們在點選螢幕上應用程式圖示的那個當下,就是呼叫 Create 3.Started(vidible) 上面 onCreate 觸發後,由 onStart 接力,使得頁面變成可視化,並將這些介面中的按鈕元件初始化 4.Resumed(vidible)
這個是程式開啟後到第一個畫面時,這邊是舉例點選了 BMI APP,到達畫面這時候的狀態就是 Resumed,也就是應用程式持續運行狀態,直到被其他事件暫停或是中斷 5.Pause(partially visible)
觸發 onPause 狀態可以是使用者下拉上方工具列使得畫面呈現部分可視
觸發 onPause 狀態也可以是使用者有來電,此時會進入暫停狀態 6.Stopped(hidden) 接著如果使用者點選接聽來電,會進入 stopped狀態,原本的頁面會被全部隱藏,並且釋放出手機的資源例如記憶體 7.Destroyed 使用者終止應用程式,則會觸發onDestroy ,也就是關閉程式,釋放出資源 ***以上就是Activity 的生命週期,光是看圖覺得難,跟著實際經驗想一次,就可以想像了!*** #操作驗證 ***上述的概念用一個程式的執行,顯示各種狀態*** 1.先複寫方法
移動游標到圖片中的1,按下 Ctrl+o,顯示選單,選取 onStart、onStop、onDestroy、onPause、onResume(複數選取按住Ctrl) 2.自動生成片段程式碼
3.加入浮動顯示
onStart、onStop、onDestroy、onPause、onResume 加入浮動顯示 ``` @Override protected void onStart() { super.onStart(); Toast.makeText(this,"onStart",Toast.LENGTH_LONG).show(); } @Override protected void onStop() { super.onStop(); Toast.makeText(this,"OnStop",Toast.LENGTH_LONG).show(); } @Override protected void onDestroy() { super.onDestroy(); Toast.makeText(this,"onDestroy",Toast.LENGTH_LONG).show(); } @Override protected void onPause() { super.onPause(); Toast.makeText(this,"onPause",Toast.LENGTH_LONG).show(); } @Override protected void onResume() { super.onResume(); Toast.makeText(this,"onResume",Toast.LENGTH_LONG).show(); } ```
OnCreate 加入浮動顯示 ``` Toast.makeText(this,"OnCreate",Toast.LENGTH_LONG).show(); ``` 4.完成示意圖
5.Demo
參考 https://www.youtube.com/watch?v=iely6CGR8nY
留言
張貼留言