android viewpager fragment 生命周期,ViewPager中Fragment的生命周期
网上有很多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的生命周期相关推荐
- java中的的一些生命周期,Java中对象的生命周期
Java中对象的生命周期 (1) 对象生命周期的开始 对象生命周期开始时,需要为对象分配内存,并且初始化它的实例变量: 对象生命周期结束 Java虚拟机的垃圾回收线程回收对象的内存. (2) 创建一个 ...
- spring bean生命周期_Spring中bean的生命周期和扩展点有哪些?
前言 今天和大家分享一下Spring中Bean的生命周期的一些知识.先来说一下什么是生命周期吧,生命周期从其语义上理解就是一个对象从产生到销毁的整个过程,之所以把这个过程称为生命周期是因为其就像一个生 ...
- java中线程的生命周期_Java中的线程生命周期– Java中的线程状态
java中线程的生命周期 Understanding Thread Life Cycle in Java and Thread States are very important when you a ...
- Android学习笔记(十一)——将Fragment添加到Activity中以及参数传递
将Fragment添加到Activity中 Fragment的布局文件 <LinearLayout xmlns:android="http://schemas.android.com/ ...
- ViewPager中Fragment的生命周期和FragmentPageAdapter与FragmentStatePageAdapter对其的影响
首先,我们创建一个Activity和一个Fragment,并在Fragment的各个生命周期打好日志,并把Fragments丢进Viewpager,这里我们往Viewpager里丢了3个Fragmen ...
- Android中Fragment+ViewPager的配合使用
原本在上一篇博客中要讲解一个Fragment的综合应用,但是中间又想到了滑屏方式,所以就分类在总结了一下,(http://smallwoniu.blog.51cto.com/3911954/13089 ...
- Android中Fragment生命周期和基本用法
1.基本概念 1. Fragment是什么? Fragment是可以让你的app纵享丝滑的设计,如果你的app想在现在基础上性能大幅度提高,并且占用内存降低,同样的界面Activity占用内存比Fra ...
- Android中Fragment跳转生命周期
一.Fragment跳转Fragment(replace方法) 对于replace方法,当第二个页面onCreate后,第一个页面会执行完生命周期,第二个页面才会执行完后续的生命周期函数. 二.Vie ...
- android 百度定位开启后fragment 不显示,解决Android百度地图MapView在ViewPager中Fragment切换黑屏问题...
百度地图切换界面出现黑屏原因是地图退出释放内存时渲染出现bug导致.因为是百度地图本身内部bug.所以我们无法从本质上去修复这个bug android:id="@ id/dynamics_m ...
最新文章
- 在Windows2016中回到DOS时代用tt练习打字
- activity 启动模式_Intent#FLAG_ACTIVITY_CLEAR_TOP 真的会 clear top 吗
- 【Python】青少年蓝桥杯_每日一题_5.21_画扇子
- Android Animation动画(很详细)
- 模拟inode号耗尽、EXT和XFS类型文件恢复(详细图解)
- java基准测试_星期五基准功能Java
- lambda ::_您无法从这里到达那里:Netlify Lambda和Firebase如何使我陷入无服务器的死胡同
- Spring+Mybatis使用MapperScannerConfigurer简化配置__MapperScannerConfigurer的作用
- Linux vsFTPd服务详解——本地用户登录实战
- Hazel引擎学习(二)
- 基于Python的西瓜数据集 3.0α的SVM实现
- java求导数_java实现队列链表,求一元多项式的导数
- 专升本英语——应试题型突破——阅读理解——阅读理解概述【学习笔记】
- android摄影程序,手机影像魅力:10款最佳Android摄影程序
- 写文案,认准这几个APP就够了
- win10浏览器闪退_win10 edge浏览器闪退打不开的恢复方法
- CMD管理员运行切换目录
- 10张图仅需1毛钱,承接ps抠图业务 | Mixlab算法
- python入门读书笔记
- 单片机开发---ESP32S3移植NES模拟器(二)
热门文章
- 三只松鼠7月12日登陆创业板 募资60亿元
- DXOMark公布最新相机综合评分:华为P30 Pro不再是唯一王者
- 前端自动化打包工具--webpack
- C# CollectionBase,ICloneeable
- opengl 高级技巧
- hashmap扩容线程安全问题_HashMap在1.7 1.8中的线程安全问题
- 前端怎么画三角形_WEB前端-CSS三角形绘制方法
- python四分位数_Python解释数学系列——分位数Quantile
- 【SpringCloud】Nacos 自定义登录用户名和密码
- 【clickhouse】clickhouse 表引擎之 null