一:Android Activity 生命周期
正常:
1. onCreate? :? 初始化工作(setContentView? 加載資源,數(shù)據(jù))(類似iOS的loadView)。
2. onStart? :? Activity? 已經(jīng)可見,但是不能交互(看不到),再后臺(類似iOS的ViewDidLoad)。
3. onRestart? :? 重新啟動(不可見? -> 可見) (用戶行為導(dǎo)致的? (類似iOS的ViewWillAppear,但是第一次不會調(diào)用)。
4. onResume :? Activity? 已經(jīng)可見,可以交互(看的見),顯示前臺(類似iOS的ViewDidAppear)。
5. onPause :? Activity 正在停止,不能做耗時操作(影響新的Activity顯示)(類似iOS的ViewWillDisAppear),
6. onStop? :? Activity? 即將停止,? 不能做耗時操作(ViewDidDisAppear)。
7. onDestroy:? Activity 即將銷毀(釋放資源)(dealloc)。
注意
case1 :第一次啟動: onCreate -》onStart -》onResume。
case2 :打開新的Activity或者切回桌面 onPause -》onStop。 (如果Activity 為透明 onStop 不會調(diào)用)。
case3 :回到原來的Activity? onRestart -》onStart? -》onResume。
case4 :點擊back onPause -》onStop -》onDestroy
case5 :onStart ,onStop? 從可見角度區(qū)分,
case6 :onResume, onPause? 從是否前臺角度區(qū)分,
case7 :A? -》B ,A 的onPause 要比 B 的onResume 先執(zhí)行。
Activity 啟動
Instrumenttation? +? ActivityThread? +? ActivityMangerService(AWS)
啟動請求 -》 Intrumenttation? -》Binder? -》AWS (維護(hù)著ActivityStack ,負(fù)責(zé)棧內(nèi)的狀態(tài)同步,ActivityThread? 狀態(tài)同步,完成生命周期方法)。
異常:
1.? 系統(tǒng)配置發(fā)生改變導(dǎo)致Activity 被殺死。(橫豎屏切換)
onPause -》onStop -》onDestroy? -》 onSaveInstanceState(保存當(dāng)前activity的Bundle對象) -》onRestoreInstanceState &&? onCreate (判斷是否被重建,onRestoreInstanceState 在onCreate之后)
保存數(shù)據(jù)流程
? onSaveInstanceState -》Window? -》頂級容器保存數(shù)據(jù) -》通知子元素保存數(shù)據(jù)。
2.? 資源不足導(dǎo)致低優(yōu)先級Activity 被殺死。
高:? 前臺Activity - 正在和用戶交互的Activity? 優(yōu)先級最高。
中:? 可見非前臺Activity(彈出一個對話框)。
低:? 已經(jīng)被暫停的Activity(執(zhí)行了onStop)。
3? 不想被創(chuàng)建?
? ? android:configChanges =? "orientation"
二 :Android? Activity LauchMode? 啟動模式
1? 啟動模式
1。 standard? 標(biāo)準(zhǔn)模式 FLAG _ACTIVITY_NEW_TASK? ABCDD
2。 singleTop? 位于棧頂? Activity 不會從新創(chuàng)建 并且調(diào)用(onNewIntent)ABCD
3。 singleTask? 單例模式? 調(diào)用(onNewIntent)? ABCD ->ACDB
4。? singleInstance? 單例模式? 只能獨立位于一個新的任務(wù)棧? 不創(chuàng)建新的。除非任務(wù)棧被銷毀
2? Activity? Flag
singleTask? ->? FLAG_ACTIVITY_NEW_TASK
singleTop? ->? FLAG_ACTIVITY_SINGLE_TOP
FLAG_ACTIVITY_CLEAR_TOP? 當(dāng)前ACTIVITY? 上面都彈出(standard) 拿出彈出(singleTask)
3? 隱式啟動 action category data 完全匹配
action 區(qū)分大小寫