Fragment 的生命周期
?
Fragment的生命周期,按照正常順序來看依次是:
onAttach(),老式的方法是以Activity為參數,后來改成了context做參數。但是其實我實際項目中并沒有重寫這一方法,因為其父類方法就可以完成Activity和fragment的綁定(關聯)。
onCreate(), 在這個方法里可以初始化一些數據,這些數據在onPause(),onStop()調用之后也能保持住不被銷毀。另外隱藏狀態欄這種操作也可以放在這里。要注意的是這個onCreate()只調用一遍,所以如果fragment沒有被銷毀并重新創建的話,一些指示當前fragment以方便Activity管理的flag參數就不要在這里設置。
onCreateView(), 如果設置了模擬返回棧,那么在onDestroyView()之后,fragment就會回到這里。這個地方主要是產生一個可以在上面畫控件的layout,并返回一個view類實例。要注意的是不應該在這里畫控件,可能會出錯。當我把flag參數放在這里時,是可以正常工作的(也許是因為似然沒有加進返回棧,但fragment都沒有執行到onDestroy()那一步)。
onActivityCreated(), 這里就比較適合初始化控件。當fragment執行到這里的時候,對應的是Activity的onCreate()剛執行完成。
-----------------接下來幾個方法和Activity中是一樣的作用:---------------
onStart(), fragment可見。
onResume(), fragment可獲取焦點(可以點擊?)。如果要設置窗口(強制/感應)橫屏或豎屏,代碼可加在這里。
onPause(),fragment 失去焦點但仍可見,部分遮擋(比如出現dialog時吧)。
onStop(), fragment被完全遮擋。
---------------------------------------------------------------------------------------------
onDestroyView(), layout被移除,包括控件資源。比如在使用viewPager時,因為它的緩存機制總是同時保存三個fragment,當滑動到第四個頁面時,第一個頁面會執行onDestroyView(),但未執行onDestroy(), 所以它會仍然與Activity保持關聯。這樣在重新滑動到第一頁時,它會直接執行onCreateView()。
onDestroy(), 與Activity中的一樣,銷毀。
onDetach(), fragment與Activity解除關聯(都銷毀了還有啥關聯?)
轉載于:https://www.cnblogs.com/jason31/p/9521985.html
總結
以上是生活随笔為你收集整理的Fragment 的生命周期的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 网络流24题-魔术球问题
- 下一篇: PHP HashTable总结