Fragment生命周期与宿主Activity生命周期
當(dāng)啟動(dòng)activity是,同時(shí)啟動(dòng)activity里面的fragment,各生命周期的起調(diào)流程
11-22 16:51:22.051 8358-8358/com.txjifei.mapclient.liteapp E/lgqq: ...Activity====onCreate===11111
11-22 16:51:22.070 8358-8358/com.txjifei.mapclient.liteapp E/lgqq: ...Activity====onStart===33333
11-22 16:51:22.073 8358-8358/com.txjifei.mapclient.liteapp E/lgqq: ...Activity====onResume===22222
11-22 16:51:22.093 8358-8358/com.txjifei.mapclient.liteapp I/lgqq: ...Fragment====onAttach===1111
? ? ...Fragment====onCreate===22222
11-22 16:51:22.102 8358-8358/com.txjifei.mapclient.liteapp I/lgqq: ...Fragment====onCreateView===333333
? ? ...Fragment====onActivityCreated===4444444
? ? ...Fragment====onStart===55555
? ? ...Fragment====onResume===666666
說明:
??????????只有真正的掌握 生命周期 才能更好的運(yùn)用frgment .
???????1.onAttach()?
??????????作用:fragment已經(jīng)關(guān)聯(lián)到activity,這個(gè)時(shí)候 activity已經(jīng)傳進(jìn)來了, 獲得activity的傳遞的值 就可以進(jìn)行 與activity的通信里, 當(dāng)然也可以使用getActivity(),前提是這個(gè)fragment已經(jīng)和宿主的activity關(guān)聯(lián),并且沒有脫離,有且只有調(diào)用一次。
?????????2.onCreate()
????????系統(tǒng)創(chuàng)建fragment的時(shí)候回調(diào)他,在他里面實(shí)例化一些變量?
????????這些個(gè)變量主要是:當(dāng)你 暫停 停止的時(shí)候 你想保持的數(shù)據(jù)?
????????他只調(diào)用一次。
????????3.onCreateView()
??????????第一次使用的時(shí)候 fragment會(huì)在這上面畫一個(gè)layout出來, 為了可以畫控件 要返回一個(gè) 布局的view,也可以返回null j 就什么都沒有顯示。?
???????????當(dāng)系統(tǒng)用到fragment的時(shí)候 fragment就要返回他的view,越快越好 ,所以盡量在這里不要做耗時(shí)操作,比如從數(shù)據(jù)庫加載大量數(shù)據(jù)?
????????4onActivityCreated()
?????????????當(dāng)Activity中的onCreate方法執(zhí)行完后調(diào)用。
? ? ?
從這句官方的話可以看出:當(dāng)執(zhí)行onActivityCreated()的時(shí)候 activity的onCreate才剛完成。
所以在onActivityCreated()調(diào)用之前 activity的onCreate可能還沒有完成,
所以不能再onCreateView()中進(jìn)行 與activity有交互的UI操作,UI交互操作可以在onActivityCreated()里面進(jìn)行。
所以呢,這個(gè)方法主要是初始化那些你需要你的父Activity或者Fragment的UI已經(jīng)被完
整初始化才能初始化的元素。
???????5.onStart()
???????和activity一致,啟動(dòng)Fragement 啟動(dòng)時(shí)回調(diào),,此時(shí)Fragement可見。
???????6.onResume()
????????和activity一致 在activity中運(yùn)行是可見的。激活, Fragement 進(jìn)入前臺(tái), 可獲取焦點(diǎn)時(shí)激活。
???????7.onPause()
????????和activity一致 其他的activity獲得焦點(diǎn),這個(gè)仍然可見第一次調(diào)用的時(shí)候,指的是 用戶 離開這個(gè)fragment(并不是被銷毀)
通常用于 用戶的提交(可能用戶離開后不會(huì)回來了)
????????8.onStop()
???????和activity一致, fragment不可見的, 可能情況:activity被stopped了或者 fragment被移除但被,加入到回退棧中,一個(gè)stopped的fragment仍然是活著的如果長時(shí)間不用也會(huì)被移除。
???????9. ??onDestroyView()?
??????Fragment中的布局被移除時(shí)調(diào)用。表示fragemnt銷毀相關(guān)聯(lián)的UI布局, 清除所有跟視圖相關(guān)的資源。
然后這個(gè)知識(shí)移除視圖 ?并沒有銷毀而且還沒有脫離activity
???????10.onDestroy()
???????銷毀fragment對(duì)象, 跟activity類似了。
??????11.onDetach()
???????Fragment和Activity解除關(guān)聯(lián)的時(shí)候調(diào)用。 脫離activity。
?
?
當(dāng)退出當(dāng)前fragment時(shí),同時(shí)退出當(dāng)前宿主activity時(shí),各聲明周期起調(diào)流程
?
11-22 16:52:35.410 8358-8358/com.txjifei.mapclient.liteapp I/lgqq: ...Fragment====onPause===777777
11-22 16:52:35.411 8358-8358/com.txjifei.mapclient.liteapp E/lgqq: ...Activity====onPause===4444444
11-22 16:52:35.768 8358-8358/com.txjifei.mapclient.liteapp I/lgqq: ...Fragment====onStop===888888
11-22 16:52:35.768 8358-8358/com.txjifei.mapclient.liteapp E/lgqq: ...Activity====onStop===555555
11-22 16:52:35.769 8358-8358/com.txjifei.mapclient.liteapp I/lgqq: ...Fragment====onDestroy===9999999
? ? ...Fragment====onDetach===000000
11-22 16:52:35.769 8358-8358/com.txjifei.mapclient.liteapp E/lgqq: ...Activity====onDestroy===666666
當(dāng)前fragment從后臺(tái)重新回到前臺(tái)可見時(shí),fragment與宿主activity各生命周期流程
11-22 16:55:39.499 8358-8358/com.txjifei.mapclient.liteapp I/lgqq: ...Fragment====onStart===55555
11-22 16:55:39.499 8358-8358/com.txjifei.mapclient.liteapp E/lgqq: ...Activity====onStart===33333
11-22 16:55:39.501 8358-8358/com.txjifei.mapclient.liteapp E/lgqq: ...Activity====onResume===22222
11-22 16:55:39.501 8358-8358/com.txjifei.mapclient.liteapp I/lgqq: ...Fragment====onResume===666666
當(dāng)前fragment從前臺(tái)可見到后臺(tái)不可見時(shí),fragment與宿主activity生命周期流程
11-22 16:59:12.944 8358-8358/com.txjifei.mapclient.liteapp I/lgqq: ...Fragment====onPause===777777
11-22 16:59:12.945 8358-8358/com.txjifei.mapclient.liteapp E/lgqq: ...Activity====onPause===4444444
11-22 16:59:13.322 8358-8358/com.txjifei.mapclient.liteapp I/lgqq: ...Fragment====onStop===888888
11-22 16:59:13.323 8358-8358/com.txjifei.mapclient.liteapp E/lgqq: ...Activity====onStop===555555
?
?
?
總結(jié)
以上是生活随笔為你收集整理的Fragment生命周期与宿主Activity生命周期的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在多线程中使用spring的bean
- 下一篇: 传递参数的2种情况的理解。