Actiity
1.Activity生命週期
- onCreate():當Activity第一次建立的時候呼叫。
- onStart():Activity已經顯示,但沒有焦點。
- onResume():Activity可以進行互動了。
- onPause():Activity失去焦點,無法再與使用者互動,但可見。
- onStop():Activity不可見狀態。
- onDestroy():Activity被銷燬。
- onRestart():Activity從不可見變成可見時會執行此方法。
2.Activity的四種啟動模式(每次看完網上的解釋,然後,然後呢.....?)
- standard :每次啟動activity都會建立一個activity例項,不管它是否存在
- singleTop :當啟動activity的時候,如果該activity不在棧頂,會建立一個activity例項,如果他在棧頂存在,執行他的onNewIntent()
- singeTask :第一次啟動建立例項,以後再啟動執行他的onNewIntent()操作,並銷燬棧中在他上面的其他例項
- singleInstance:第一次啟動建立例項,在啟動執行onNewIntent(),並且單獨在一個棧中。
onNewIntent()的執行(非生命週期中):
- 啟動模式singletop(當前activity在棧頂時)以及 singletask會呼叫onNewIntent()。
四種模式適用的情況:
- standard:用的最多的預設的跳轉。
- singleTop:1.接收通知後跳轉顯示頁面 2.搜尋介面自己跳轉自己呼叫onNewIntent()。
- singeTask : 反正就一個。(登陸頁面?主頁?)
- singleInstance : 一次性玩具?
- 額外補充一個 Intent.FLAG_ACTIVITY_CLEAR_TASK : 清除所有棧中老的Activity(清道夫?)。
3.未知,待補充。。。。。
Fragment(碎片)
1.Fragment是依賴於Activity的,不能獨立存在的!!!
有次面試,面試官問了一個問題,我矇蔽了半天 :fragment能否獨立存在。what fk is that ?!
按理說是不能的,但看著面試官邪惡的表情,我居然說:應該不能。。。可怕 ,告辭
2.Fragment的生命週期
- onAttach():Fragment和Activity相關聯時呼叫。可通過該方法獲取Activity引用,還可通過getArguments()獲取引數。
- onCreate():Fragment被建立時呼叫。
- onCreateView():建立Fragment的佈局。
- onActivityCreated():當Activity完成onCreate()時呼叫。
- onStart():當Fragment可見時呼叫。
- onResume():當Fragment可見且可互動時呼叫。
- onPause():當Fragment不可互動但可見時呼叫。
- onStop():當Fragment不可見時呼叫。
- onDestroyView():當Fragment的UI從檢視結構中移除時呼叫。
- onDestroy():銷燬Fragment時呼叫。
- onDetach():當Fragment和Activity解除關聯時呼叫。
3.Fragment與Activity的混合生命週期
-
onCreate()
Activity onCreate...
Fragment onAttach...
Fragment onCreate...
Fragment onCreateView...
Fragment onActivityCreated... -
onDestroy()
Fragment onDestroyView...
Fragment onDestroy...
Fragment onDetach...
Activity onDestroy... -
除此之外初始化的生命週期都是activity先走,pause()等都是fragment先走。
4.Fragment與Activity相互私聊
- Handle : 在Activity中定義一個handle並且在fragment 的onAttach()生命週期中獲取 (fragment通知Activity)。
- 廣播(????呵呵) (相互私聊)
- 介面方案: 與Handle方案相似。(fragment通知Activity)
- context強轉activity呼叫方法。(fragment通知Activity)
- 觀察者模式(也只能單向????)
- EventBus:利用反射,好用不要錢 ,目前個人覺得最好的方案。(相互私聊)