Fragment的使用越来越普遍了,掌握它的生命周期以及注意事项时非常有必要的,首先

All subclasses of Fragment must include a public empty constructor. The framework will often re-instantiate a fragment class when needed, in particular during state restore, and needs to be able to find this constructor to instantiate it.
也就是说每个继承Fragment的类都必须要有公开的构造方法,以便fragment能在需要的时候还原原来的状态。感觉很难理解?通俗的说就是:SDK还原fragment数据的时候,肯定先通过调用XXX.newInstance()方法,获取到fragment的实例对象。这就是为什么要提供一个公开的构造方法的原因了!!

其次,生命周期是必须了解的,这个就没必要废话了,网上搜下到处都是。

重点来了,fragment使用时常遇到的情况是,在一个activity中通过菜单选项的点击来切换不同的fragment,通常是需要保存fragment的状态的,就如编辑个人信息模块时点击其他菜单,返回时你编辑的信息应该要保存的,而不是再次初始化。这时fragment的hide/show方法就派上用场了!

很快聪明的你就会发现fragment的生命周期怎么不走了?onPause方法怎么不调用了?onResume怎么只调用一次了?

这时此时方法onHiddenChanged派上用场了,当fragment隐藏时,该方法会调用传入参数为true表示该fragment被隐藏了,当fragment调用了show方法后,该方法传入的参数为false,表示该fragment正在显示!

所以总结起来,如果使用hide/show方法来控制fragment的使用时,原本需要在onResume以及onPause方法做的事情就可以迁移到onHiddenChanged时进行管理,如:

if (hidden) {// 不在最前端界面显示
AA.onPause();
} else {// 重新显示到最前端中
BB.onResume();
}

可以自行做个demo测试,下面贴出完整的生命周期:

fragment hide/show 生命周期的更多相关文章

  1. Android Fragment详解(二):Fragment创建及其生命周期

    Fragments的生命周期 每一个fragments 都有自己的一套生命周期回调方法和处理自己的用户输入事件. 对应生命周期可参考下图: 创建片元(Creating a Fragment) To c ...

  2. Android开发 - Fragment与Activity生命周期比较

    1. Fragment的生命周期 见下图 2. 与Activity生命周期的对比 见下图 3. 代码场景演示实例 切换到该Fragment: AppListFragment(7649): onAtta ...

  3. Activity ViewPager Fragment框架的生命周期

    1.Fragment的生命周期函数 onAttach.onCreate.onCreateView.onViewCreated.onActivityCreated.onStart.onResume.on ...

  4. *Fragment与Activity生命周期的协调

    本文出处:http://blog.csdn.net/think_soft/article/details/7272869 拥有Fragment的Activity的生命周期直接影响了其中的Fragmen ...

  5. 浅谈 Fragment 生命周期

    版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/Fragment 文中如有纰漏,欢迎大家留言指出. Fragment 是在 Android 3.0 中 ...

  6. Fragment(四)Fragment生命周期分析(转)

    Fragment(四)Fragment生命周期分析 转载请注明:http://blog.csdn.net/liaoqianchuan00/article/details/24271607   例子一 ...

  7. Fragment与Fragment相互切换之间的生命周期方法

    Fragment 1 切换到 Fragment 2时生命周期变化 1.通过 add hide show 方式来切换 Fragment Fragment1 的生命周期变化为:onCreate().onC ...

  8. 死磕 Fragment 的生命周期

    死磕 Fragment 的生命周期 本文原创,转载请注明出处.欢迎关注我的 简书 ,关注我的专题 Android Class 我会长期坚持为大家收录简书上高质量的 Android 相关博文.本篇文章已 ...

  9. 【Android归纳】Fragment生命周期-基于实验的最新总结

    如今非常多应用的开发都是基于FragmentActivity中嵌套Fragment进行开发的,所以,假设我们可以清晰地知道他们的生命周期,那么会使我们的开发变的easy. 对于Activity的生命周 ...

随机推荐

  1. 使用binlog2sql工具来恢复数据库

    (一)binlog2sql介绍 binlog2sql是国内MySQL大佬danfengcao开发,许多MySQL爱好者参与改进的一款MySQL binlog解析软件.根据不同选项,可以得到原始SQL. ...

  2. ADO.NET(一)

    最近在公司有用到了ADO.NET技术,由浅入深的复习一下. 如图所示,水源就像一个水库,进水龙头就像Connection,同理,抽水机:Command,输水管:DataAdapter 或 DataRe ...

  3. react: typescript interface useState issue

    define interface: interface ILoginState { imageId: string; imageSrc: string; username: string; passw ...

  4. Jmeter系列(7)- 基础线程组Thread Group

    如果你想从头学习Jmeter,可以看看这个系列的文章哦 https://www.cnblogs.com/poloyy/category/1746599.html Thread Group基础线程组介绍 ...

  5. SQLI-LABS学习笔记(二)

    逼话少说,如有错误,烦请指出,谢谢 这两天生病,效率很低 第5关 打开页面 发现跟前几题不同,没有直接返回数据.. 加个单引号 You have an error in your SQL syntax ...

  6. VHD VHDX 区别

    A Virtual hard disk is saved either with VHD or VHDX file extension. VHD is the older while VHDX is ...

  7. [Qt] 去掉QMessageBox标题栏上的图标

    msgBox.setWindowFlags(Qt::Drawer);

  8. Python不同版本打包程序为.exe文件

    安装pyinstaller 测试用的python环境是3.6.2版本 下载地址 https://github.com/pyinstaller/pyinstaller/ 1.打开cmd,切到pyinst ...

  9. if __name=='__main__"的作用

    1.__main__的作用 我们可以经常在不同的程序和脚本中看到有这样的代码: if __name__=='__main__':#如果在windows上启动线程池,必须要使用. func() 很多情况 ...

  10. Golang项目部署

    文章来源:https://goframe.org/deploymen... 一.独立部署 使用GF开发的应用程序可以独立地部署到服务器上,设置为后台守护进程运行即可.这种模式常用在简单的API服务项目 ...