四種狀態(tài):
正常情況下:依次會走Activity啟動--onCreate()--onStart()--onResume()--Activity此時呈現(xiàn)在用戶面前--當停掉Activity時會執(zhí)行onPuse()--Activity不可見時執(zhí)行onStop()--Activity被銷毀時---onDestory()
Activity暫停之后, 用戶又返回到Activity時:依次會執(zhí)行onResume()--Activity此時呈現(xiàn)在用戶面前--當停掉Activity時會執(zhí)行onPuse()--Activity不可見時執(zhí)行onStop()--Activity被銷毀時---onDestory()
Activity長時間不可見倘潜,用戶又重新導航到Activity:依次會執(zhí)行onRestart()--onStart()--onResume()--Activity此時呈現(xiàn)在用戶面前--當停掉Activity時會執(zhí)行onPuse()--Activity不可見時執(zhí)行onStop()--Activity被銷毀時---onDestory()
Activity被釋放掉后又重新導航回來:依次會執(zhí)行onCreate()--onStart()--onResume()--Activity此時呈現(xiàn)在用戶面前--當停掉Activity時會執(zhí)行onPuse()--Activity不可見時執(zhí)行onStop()--Activity被銷毀時---onDestory()
BACK鍵:
當我們按BACK鍵時周蹭,我們這個應(yīng)用程序?qū)⒔Y(jié)束,這時候我們將先后調(diào)用onPause()->onStop()->onDestory()三個方法血久。
再次啟動App時,會執(zhí)行onCreate()->onStart()->onResume()
HOME鍵:
按HOME的時候善玫,Activity先后執(zhí)行了onPause()->onStop()這兩個方法,這時候應(yīng)用程序并沒有銷毀割卖。
而當我們從桌面再次啟動應(yīng)用程序時,則先后分別執(zhí)行了onRestart()->onStart()->onResume()三個方法患雏。
橫豎屏切換時Activity的生命周期:
從豎屏--橫屏:從當前界面依次會走onPuse()--onStop()--onDestory()--onCreate()--onStart()--onResume()鹏溯。可以看出豎屏會銷毀淹仑,橫屏會重新創(chuàng)建丙挽。
onSaveInstanceState() 和 onRestoreInstanceState()
當應(yīng)用遇到意外情況(如:內(nèi)存不足、用戶直接按Home鍵)由系統(tǒng)銷毀一個Activity時匀借,onSaveInstanceState() 會被調(diào)用颜阐。但是當用戶主動去銷毀一個Activity時,例如在應(yīng)用中按返回鍵吓肋,onSaveInstanceState()就不會被調(diào)用凳怨。
通常onSaveInstanceState()只適合用于保存一些臨時性的狀態(tài),而onPause()適合用于數(shù)據(jù)的持久化保存是鬼。
onSaveInstanceState()
的調(diào)用將發(fā)生在onPause()或onStop()方法之前肤舞。(雖然測試時發(fā)現(xiàn)多數(shù)在onPause()前)
onRestoreInstanceState()
在 onStart() 和 onPostCreate(Bundle)之間調(diào)用。onPostCreate() 在 handleStartActivity() 時被調(diào)用