Fragment生命周期与宿主Activity生命周期
當啟動activity是,同時啟動activity里面的fragment,各生命周期的起調流程
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
說明:
??????????只有真正的掌握 生命周期 才能更好的運用frgment .
???????1.onAttach()?
??????????作用:fragment已經關聯到activity,這個時候 activity已經傳進來了, 獲得activity的傳遞的值 就可以進行 與activity的通信里, 當然也可以使用getActivity(),前提是這個fragment已經和宿主的activity關聯,并且沒有脫離,有且只有調用一次。
?????????2.onCreate()
????????系統創建fragment的時候回調他,在他里面實例化一些變量?
????????這些個變量主要是:當你 暫停 停止的時候 你想保持的數據?
????????他只調用一次。
????????3.onCreateView()
??????????第一次使用的時候 fragment會在這上面畫一個layout出來, 為了可以畫控件 要返回一個 布局的view,也可以返回null j 就什么都沒有顯示。?
???????????當系統用到fragment的時候 fragment就要返回他的view,越快越好 ,所以盡量在這里不要做耗時操作,比如從數據庫加載大量數據?
????????4onActivityCreated()
?????????????當Activity中的onCreate方法執行完后調用。
? ? ?
從這句官方的話可以看出:當執行onActivityCreated()的時候 activity的onCreate才剛完成。
所以在onActivityCreated()調用之前 activity的onCreate可能還沒有完成,
所以不能再onCreateView()中進行 與activity有交互的UI操作,UI交互操作可以在onActivityCreated()里面進行。
所以呢,這個方法主要是初始化那些你需要你的父Activity或者Fragment的UI已經被完
整初始化才能初始化的元素。
???????5.onStart()
???????和activity一致,啟動Fragement 啟動時回調,,此時Fragement可見。
???????6.onResume()
????????和activity一致 在activity中運行是可見的。激活, Fragement 進入前臺, 可獲取焦點時激活。
???????7.onPause()
????????和activity一致 其他的activity獲得焦點,這個仍然可見第一次調用的時候,指的是 用戶 離開這個fragment(并不是被銷毀)
通常用于 用戶的提交(可能用戶離開后不會回來了)
????????8.onStop()
???????和activity一致, fragment不可見的, 可能情況:activity被stopped了或者 fragment被移除但被,加入到回退棧中,一個stopped的fragment仍然是活著的如果長時間不用也會被移除。
???????9. ??onDestroyView()?
??????Fragment中的布局被移除時調用。表示fragemnt銷毀相關聯的UI布局, 清除所有跟視圖相關的資源。
然后這個知識移除視圖 ?并沒有銷毀而且還沒有脫離activity
???????10.onDestroy()
???????銷毀fragment對象, 跟activity類似了。
??????11.onDetach()
???????Fragment和Activity解除關聯的時候調用。 脫離activity。
?
?
當退出當前fragment時,同時退出當前宿主activity時,各聲明周期起調流程
?
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
當前fragment從后臺重新回到前臺可見時,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
當前fragment從前臺可見到后臺不可見時,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
?
?
?
總結
以上是生活随笔為你收集整理的Fragment生命周期与宿主Activity生命周期的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在多线程中使用spring的bean
- 下一篇: 传递参数的2种情况的理解。