网上有很多Fragment生命周期的帖子,但是看了一下,没有找到自己想了解的东西,于是决定自己动手体验一下这个生命周期。主要想了解以下几个问题:

Activity中的Fragment的生命周期

ViewPager中Frament的生命周期

Fragment中Fragment的生命周期

Activity中Fragment的生命周期

在Activity中创建一个FrameLayout,一个Button用于切换FrameLayout中的Fragment:

lifecircle_lxacoder.png

程序运行时打印的log:

lifecircle_lxacoder.png

这里注意到当Activity中Start(由不见变为可见)调用后,Fragment的onActivityCreated才会被调用。

当点击Button时的log:

lifecircle_lxacoder.png

可以看出,第二个Fragment先和Activity建立关联,并且Create,等到第一个Fragment消失时,第二个Fragment才createView,也就是加载Fragment的布局,然后调用onActivityCreated,在这里第二个Fragment关联的Activity已经创建好了的,但是系统还是会调用这个方法一次,确保与Fragment关联的Activity是创建好了的。,

点击back按钮时的log:

lifecircle_lxacoder.png

可以看出Activity先于Fragment销毁。

ViewPager中Fragment的生命周期

这次直接在根布局中放了一个ViewPager,adapter继承的FragmentPagerAdapter:

lifecircle_lxacoder.png

程序启动时的Log:

lifecircle_lxacoder.png

可以看到,MainAcitivity按照常规顺序调用后,FirstFragment和SecondFragment先后调用了onAttach和onCreate实例化了Fragment,并且在FirstFragment调用onResume之后,SecondFragment也调用了onResume,也就是是说SecondFragment已经加载好了,随时准备变为可见,接下来滑动到SecondFragment,可以看到:

lifecircle_lxacoder.png

没错,和我心里想的一样,加载的是第三个Fragment,嗯,心里应该明白FragmentPagerAdapter这样做的目的,然后再滑到第三个Fragment,可以看到:

lifecircle_lxacoder.png

第一个Fragment已经DestroyView了,FragmentPagerAdapter默认的是会加载前后两个pager,这次在程序启动时调用pager的setCurrentItem(1)方法,嗯,心里面已经知道会输出什么了,来验证一下,:

Paste_Image.png

输出了这么多,和心里想的一样,第一个pager里的Fragment和第二个pager里的Fragment都已经加载了。

我在这里的理解是onResume()调用后,不一样像网上讲得那样,一定会从不可见变得可见,有可能是把自己加载到了内存,随时准备着和用户交互。

Fragment中Fragment的生命周期

应该说成Fragment中的Viewpager中的Fragment的生命周期,这次将Viewpager放到一个FirstFragment中,Viewpager包含secondfragment和ThirdFragment,看看会有什么输出:

Paste_Image.png

没有什么意外的,和想的一样,相当于前面两个主题内容的结合。

如果有什么说的不对的,希望大家指出来,谢谢.

android viewpager fragment 生命周期,ViewPager中Fragment的生命周期相关推荐

  1. java中的的一些生命周期,Java中对象的生命周期

    Java中对象的生命周期 (1) 对象生命周期的开始 对象生命周期开始时,需要为对象分配内存,并且初始化它的实例变量: 对象生命周期结束 Java虚拟机的垃圾回收线程回收对象的内存. (2) 创建一个 ...

  2. spring bean生命周期_Spring中bean的生命周期和扩展点有哪些?

    前言 今天和大家分享一下Spring中Bean的生命周期的一些知识.先来说一下什么是生命周期吧,生命周期从其语义上理解就是一个对象从产生到销毁的整个过程,之所以把这个过程称为生命周期是因为其就像一个生 ...

  3. java中线程的生命周期_Java中的线程生命周期– Java中的线程状态

    java中线程的生命周期 Understanding Thread Life Cycle in Java and Thread States are very important when you a ...

  4. Android学习笔记(十一)——将Fragment添加到Activity中以及参数传递

    将Fragment添加到Activity中 Fragment的布局文件 <LinearLayout xmlns:android="http://schemas.android.com/ ...

  5. ViewPager中Fragment的生命周期和FragmentPageAdapter与FragmentStatePageAdapter对其的影响

    首先,我们创建一个Activity和一个Fragment,并在Fragment的各个生命周期打好日志,并把Fragments丢进Viewpager,这里我们往Viewpager里丢了3个Fragmen ...

  6. Android中Fragment+ViewPager的配合使用

    原本在上一篇博客中要讲解一个Fragment的综合应用,但是中间又想到了滑屏方式,所以就分类在总结了一下,(http://smallwoniu.blog.51cto.com/3911954/13089 ...

  7. Android中Fragment生命周期和基本用法

    1.基本概念 1. Fragment是什么? Fragment是可以让你的app纵享丝滑的设计,如果你的app想在现在基础上性能大幅度提高,并且占用内存降低,同样的界面Activity占用内存比Fra ...

  8. Android中Fragment跳转生命周期

    一.Fragment跳转Fragment(replace方法) 对于replace方法,当第二个页面onCreate后,第一个页面会执行完生命周期,第二个页面才会执行完后续的生命周期函数. 二.Vie ...

  9. android 百度定位开启后fragment 不显示,解决Android百度地图MapView在ViewPager中Fragment切换黑屏问题...

    百度地图切换界面出现黑屏原因是地图退出释放内存时渲染出现bug导致.因为是百度地图本身内部bug.所以我们无法从本质上去修复这个bug android:id="@ id/dynamics_m ...

最新文章

  1. 在Windows2016中回到DOS时代用tt练习打字
  2. activity 启动模式_Intent#FLAG_ACTIVITY_CLEAR_TOP 真的会 clear top 吗
  3. 【Python】青少年蓝桥杯_每日一题_5.21_画扇子
  4. Android Animation动画(很详细)
  5. 模拟inode号耗尽、EXT和XFS类型文件恢复(详细图解)
  6. java基准测试_星期五基准功能Java
  7. lambda ::_您无法从这里到达那里:Netlify Lambda和Firebase如何使我陷入无服务器的死胡同
  8. Spring+Mybatis使用MapperScannerConfigurer简化配置__MapperScannerConfigurer的作用
  9. Linux vsFTPd服务详解——本地用户登录实战
  10. Hazel引擎学习(二)
  11. 基于Python的西瓜数据集 3.0α的SVM实现
  12. java求导数_java实现队列链表,求一元多项式的导数
  13. 专升本英语——应试题型突破——阅读理解——阅读理解概述【学习笔记】
  14. android摄影程序,手机影像魅力:10款最佳Android摄影程序
  15. 写文案,认准这几个APP就够了
  16. win10浏览器闪退_win10 edge浏览器闪退打不开的恢复方法
  17. CMD管理员运行切换目录
  18. 10张图仅需1毛钱,承接ps抠图业务 | Mixlab算法
  19. python入门读书笔记
  20. 单片机开发---ESP32S3移植NES模拟器(二)

热门文章

  1. 三只松鼠7月12日登陆创业板 募资60亿元
  2. DXOMark公布最新相机综合评分:华为P30 Pro不再是唯一王者
  3. 前端自动化打包工具--webpack
  4. C# CollectionBase,ICloneeable
  5. opengl 高级技巧
  6. hashmap扩容线程安全问题_HashMap在1.7 1.8中的线程安全问题
  7. 前端怎么画三角形_WEB前端-CSS三角形绘制方法
  8. python四分位数_Python解释数学系列——分位数Quantile
  9. 【SpringCloud】Nacos 自定义登录用户名和密码
  10. 【clickhouse】clickhouse 表引擎之 null