會打這個記錄,最主要就是要用在狀態的儲存和恢復,還有旋轉螢幕的功能該如何實作。參考下面文章:
| Class | Method |
|---|
| Main | onCreate |
| MainFragment | onAttach |
| Main | onAttachFragment |
| MainFragment | onCreate |
| MainFragment | onCreateView |
| MainFragment | onViewCreated |
| MainFragment | onActivityCreated |
| Main | onStart |
| MainFragment | onStart |
| Main | onPostCreate |
| Main | onResume |
| MainFragment | onResume |
| Main | onPostResume |
| Main | onCreateOptionsMenu |
| Main | onPrepareOptionsMenu |
Main按Home鍵回到桌面
| Class | Method |
|---|
| MainFragment | onPause |
| Main | onPause |
| Main | onSaveInstanceState |
| MainFragment | onSaveInstanceState |
| MainFragment | onStop |
| Main | onStop |
多工鍵返回或按程式重新進入Main
| Class | Method |
|---|
| Main | onRestart |
| Main | onStart |
| MainFragment | onStart |
| Main | onResume |
| MainFragment | onResume |
| Main | onPostResume |
無任何訊息
| Class | Method |
|---|
| Main | onCreate |
| MainFragment | onViewStateRestored |
| MainFragment | onAttach |
| Main | onAttachFragment |
| MainFragment | onCreate |
| MainFragment | onCreateView |
| MainFragment | onViewCreated |
| MainFragment | onActivityCreated |
| Main | onStart |
| MainFragment | onStart |
| Main | onPostCreate |
| Main | onResume |
| MainFragment | onResume |
| Main | onPostResume |
| Main | onCreateOptionsMenu |
| Main | onPrepareOptionsMenu |
第2個 MainFragment.onViewStateRestored(),有 API Level 17 的限制。
Main執行finish或按返回鍵
這兩個動作的結果是一樣的。
| Class | Method |
|---|
| MainFragment | onPause |
| Main | onPause |
| MainFragment | onStop |
| Main | onStop |
| MainFragment | onDestroyView |
| MainFragment | onDestroy |
| MainFragment | onDetach |
| Main | onDestroy |
Main 切換到 Sub
不管有沒有要回傳,都會是以下的結果。
| Class | Method |
|---|
| MainFragment | onPause |
| Main | onPause |
| Sub | onCreate |
| SubFragment | onAttach |
| Sub | onAttachFragment |
| SubFragment | onCreate |
| SubFragment | onViewCreated |
| SubFragment | onActivityCreated |
| Sub | onStart |
| SubFragment | onStart |
| Sub | onPostCreate |
| Sub | onResume |
| SubFragment | onResume |
| Sub | onPostResume |
| Sub | onCreateOptionsMenu |
| Sub | onPrepareOptionsMenu |
| Main | onSaveInstanceState |
| MainFragment | onSaveInstanceState |
| MainFragment | onStop |
| Main | onStop |
包括有回傳值的也是一樣的結果
| Class | Method |
|---|
| SubFragment | onPause |
| Sub | onPause |
| MainFragment | onActivityResult, requestCode: 10 , resultCode: 10 |
| Main | onRestart |
| Main | onStart |
| MainFragment | onStart |
| Main | onResume |
| MainFragment | onResume |
| Main | onPostResume |
| SubFragment | onStop |
| Sub | onStop |
| SubFragment | onDestroyView |
| SubFragment | onDestroy |
| SubFragment | onDetach |
| Sub | onDestroy |
Main 翻轉螢幕
| Class | Method |
|---|
| MainFragment | onPause |
| Main | onPause |
| Main | onSaveInstanceState |
| MainFragment | onSaveInstanceState |
| MainFragment | onStop |
| Main | onStop |
| MainFragment | onDestroyView |
| MainFragment | onDestroy |
| MainFragment | onDetach |
| Main | onDestroy |
| Main | onCreate |
| MainFragment | onAttach |
| Main | onAttachFragment |
| MainFragment | onCreate |
| MainFragment | onCreateView |
| MainFragment | onViewCreated |
| MainFragment | onActivityCreated |
| Main | onStart |
| MainFragment | onStart |
| Main | onRestoreInstanceState |
| Main | onCreateOptionsMenu |
| Main | onPrepareOptionsMenu |
| Main | onPostCreate |
| Main | onResume |
| MainFragment | onResume |
| Main | onPostResume |
加入 android:configChanges 設定後,Main 翻轉螢幕
在 AudroidManifest.xml 加入 android:configChanges 設定:
- android:configChanges=“orientation”
- android:configChanges=“orientation|screenSize” (API level 13以上)
- android:configChanges=“orientation|keyboardHidden” (使用 AVD 模擬器測試)
| Class | Method |
|---|
| Main | onConfigurationChanged |
| MainFragment | onConfigurationChanged |
剛剛翻轉螢幕的動作全不見了,只剩下 onConfigurationChanged。