【Android開發坑系列】之Fragment

這個東西有顧名思義是碎片,和以前的Activity對應。sql

坑1:通常狀況都會想固然的覺得進程被殺掉以後,Fragment也會被回收數據庫

其實,Fragment有本身的生命週期,有本身的管理器(FragmentManager),也即:
包含Fragment的進程被幹掉,Fragment不必定會被回收,而是由FragmentManager來決定生死。緩存

Q:如何驗證上面的說法?
A:若是是通常正常的流程「打開-關閉」軟件,Fragment的確被回收了。可是若是使用「騰訊手機管家」之類的內存清理工具,清理內存(其實是殺死進程),會發現Fragment沒有被回收,一直緩存着。驗證方法以下:緩存Fragment的Tag到本地數據庫(能夠是xml/sqlite等),而後FragmentManager.findFragmentByTag(...)是否爲Null來驗證Framgent是否被回收了。工具

有個奇怪的現狀是:在上面藍色的狀況發生後,Framgent和包含他的Activity的生命週期順序都亂套了,本來是:
Activity.onCreate-->Fragment.onCreate-->Fragment.onCreateView
變成:
Fragment.onCreate-->Activity.onCreate-->Fragment.onCreateView
猜想是由於直接用的Frament緩存,其onCreate先於父Activity.onCreate執行了。ui

坑2:添加Fragment注意事項,閱讀:http://www.tuicool.com/articles/qaA7ryspa

相關文章
相關標籤/搜索