Fragment深入解析
来源:互联网 发布:java语言分段函数 编辑:程序博客网 时间:2024/06/15 22:30
Fragment的生命周期,大家可以参考博客:
http://blog.csdn.net/forever_crying/article/details/8238863/
http://blog.csdn.net/hjj0212/article/details/8530273
http://blog.csdn.net/lmj623565791/article/details/37970961/
通过观察我们发现,Fragment和Activity的生命周期有相似之处,如下图:
主要区别在于Fragment的创建过程其实是依赖于Activity容器的,并且销毁的时候也是基于Activity容器进行销毁的,Fragment就是碎片的意思,就是基于Activity显示容器显示的碎片视图。
下面我想通过实验来说明我的观点:
1)首先,我们来证实一点,就是Fragment在什么时候会走生命周期?
有的人说,不是和Activity一样吗?就是在跳转的时候呗,但是Fragment不是跳转的,而是添加或者移除到FrameLayout进行显示或者隐藏的操作,所以在我们new一个Fragment的时候,它是不会走生命周期方法的。
2)我们都知道,目前有两种添加一个Fragment的方法,一个是安卓api的Fragment,一种是support-v4包下的Fragment,那么你知道它们之间有什么异同吗?
答:尽量不要用app包中的fragment,因为这个是在3.0之后才有的,支持的版本太高,在低版本中是是用不了的,android.support.v4.app.Fragment:可以兼容到1.6的版本。得到FragmentManager的方法不一样:android.app.Fragment:使用getFragmentManager()方法。android.support.v4.app.Fragment:使用getSupportFragmentManager()方法。当v4.fragment使用标签的时候就要特别注意了:
当这个Activity的布局中有标签的时候,这个Activity必须继承FragmentActivity,否则就会报错,原因是此时如果不继承FragmentActivity的话,编译系统会把android.support.v4.app.Fragment当成app包中的Fragment来处理,但是此时我们导入的是v4包中的Fragment。
3)Activity和Fragment的生命周期调用上有什么先后顺序呢?
4)注意:常用Fragment的哥们,可能会经常遇到这样Activity状态不一致:State loss这样的错误。主要是因为:commit方法一定要在Activity.onSaveInstance()之前调用。
5)remove和detach有一点细微的区别,在不考虑回退栈的情况下,remove会销毁整个Fragment实例,而detach则只是销毁其视图结构,实例并不会被销毁。那么二者怎么取舍使用呢?如果你的当前Activity一直存在,那么在不希望保留用户操作的时候,你可以优先使用detach。
- Fragment深入解析
- Android Fragment全面深入解析一
- Android fragment全面深入解析二
- Android fragment全面深入解析三
- 解析Fragment
- Fragment解析
- Fragment解析
- Fragment解析
- Fragment解析
- Fragment解析
- fragment解析
- Fragment解析
- Fragment解析
- fragment解析
- 深入理解Fragment(一)
- 深入理解Fragment(二)
- 深入理解Fragment(三)
- 深入学习Fragment
- 二分法l例 E
- skydns
- Android Behavior详解
- ftp+nginx搭建图片服务器,上传FTP文件可以传到服务器上,但是文件大小是0字节的 而且点击按钮后程序会卡死
- The server time zone value 'EDT' is unrecognized or represents more than one time zone.
- Fragment深入解析
- linux中shell变量$#,$@,$0,$1,$2的含义解释:
- Javascript模块化编程(二):AMD规范
- exec函数实现
- 盘点5种长盛不衰的电子游戏类型
- net start mysql报发生系统错误2
- 封装Adapter ViewHolder
- JQuery ajax提交表单时<button>按钮引起的 Request method 'GET' not supported错误!
- android:windowsoftinputmode=“adjustresize” 无效的解决办法