關於Activity的生命周期,這個應該在很多Android書上都有講的,自己寫的目的是根據自己測試得出的結論,一方面是方便自己復習,另一方面是做個記錄。
Activity1簡稱A1,Activity2簡稱A2,通過Activity1創建Activity2,Activity2啟動後完全遮擋Activity1.
1.啟動A1,點擊A1上的按鈕創建A2,然後點擊A2中的按鈕返回A1,方法調用順序如下:
A1 OnCreat() -> A1 OnStart() -> A1OnResume() -> A1 OnPause() -> A2 OnCreat() -> A2 OnStart() -> A2 OnResume() -> A1 OnStop() -> A2 OnPause() -> A1 OnCreat() -> A1 Onstart() -> A1 OnResume() -> A2 OnStop()
2.啟動A1,點擊A1上的按鈕創建A2,然後點擊Android自帶的返回按鈕,從A2返回A1,方法調用順序如下:
A1 OnCreat() -> A1 OnStart() -> A1OnResume() -> A1 OnPause() -> A2 OnCreat() -> A2 OnStart() -> A2 OnResume() -> A1 OnStop() -> A2 OnPause() -> A1 OnRestart() -> A1 Onstart() -> A1 OnResume() -> A2 OnStop() -> AC2 OnDestroy()
用紅色標注的地方不同,為什麼不同呢?因為在A2上點擊返回A1是創建了一個新的Activity,而通過“返回按鈕”返回A1則是根據出棧的原理。如下圖所示:
AC2未能完全遮擋住AC1的情況是這樣的,點擊AC1上的按鈕,彈出AC2:
A1 OnCreat() -> A1 OnStart() -> A1OnResume() -> A1 OnPause() -> A2 OnCreat() -> A2 OnStart() -> A2 OnResume() -> A1 OnStop() -> A2 OnPause() -> A1 OnResume() -> A2 OnStop() -> AC2 OnDestroy()
AC2中的按鈕Go to First 是一條finish()指令,跟模擬器上的返回鍵效果是一樣的。