这个东西有顾名思义是碎片,和以前的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