Activity ViewPager Fragment框架的生命周期
1、Fragment的生命周期函数
onAttach、onCreate、onCreateView、onViewCreated、onActivityCreated、onStart、onResume、onPause、onStop、onDestroyView、onDestroy、onDettach
Activity的各种生命周期函数先执行,然后各个Fragment不论是不是可见与否紧接着调用同样的生命周期函数。比如Activity的onResume,几个Fragment的onResume紧跟着执行。
2、Activity和Fragment的生命周期函数的顺序如下:
05-25 13:49:42.757 7242-7242/com.yunzhiyuan100.wish D/Linghu MainActivity.onCreate: ============MainActivity===onCreate
05-25 13:49:42.760 7242-7242/com.yunzhiyuan100.wish D/Linghu MainActivity.onStart: ============MainActivity===onStart
05-25 13:49:42.762 7242-7242/com.yunzhiyuan100.wish D/Linghu MainActivity.onResume: ============MainActivity===onResume
05-25 13:49:42.785 7242-7242/com.yunzhiyuan100.wish D/Linghu HomeFragment.onAttach: ===================HomeFragment===onAttach
05-25 13:49:42.786 7242-7242/com.yunzhiyuan100.wish D/Linghu HomeFragment.onCreate: ===================HomeFragment===onCreate
05-25 13:49:42.786 7242-7242/com.yunzhiyuan100.wish D/Linghu FindFragment.onAttach: ===================FindFragment===onAttach
05-25 13:49:42.787 7242-7242/com.yunzhiyuan100.wish D/Linghu FindFragment.onCreate: ===================FindFragment===onCreate
05-25 13:49:42.787 7242-7242/com.yunzhiyuan100.wish D/Linghu MineFragment.onAttach: ===================MineFragment===onAttach
05-25 13:49:42.787 7242-7242/com.yunzhiyuan100.wish D/Linghu MineFragment.onCreate: ===================MineFragment===onCreate
05-25 13:49:42.788 7242-7242/com.yunzhiyuan100.wish D/Linghu HomeFragment.onCreateView: ===================HomeFragment===onCreateView
05-25 13:49:42.908 7242-7242/com.yunzhiyuan100.wish D/Linghu HomeFragment.onViewCreated: ===================HomeFragment===onViewCreated
05-25 13:49:42.908 7242-7242/com.yunzhiyuan100.wish D/Linghu HomeFragment.onActivityCreated: ===================HomeFragment===onActivityCreated
05-25 13:49:42.920 7242-7242/com.yunzhiyuan100.wish D/Linghu HomeFragment.onStart: ===================HomeFragment===onStart
05-25 13:49:42.920 7242-7242/com.yunzhiyuan100.wish D/Linghu HomeFragment.onResume: ===================HomeFragment===onResume
05-25 13:49:42.921 7242-7242/com.yunzhiyuan100.wish D/Linghu FindFragment.onCreateView: ===================FindFragment===onCreateView
05-25 13:49:42.955 7242-7242/com.yunzhiyuan100.wish D/Linghu FindFragment.onViewCreated: ===================FindFragment===onViewCreated
05-25 13:49:42.956 7242-7242/com.yunzhiyuan100.wish D/Linghu FindFragment.onActivityCreated: ===================FindFragment===onActivityCreated
05-25 13:49:42.956 7242-7242/com.yunzhiyuan100.wish D/Linghu MineFragment.onCreateView: ===================MineFragment===onCreateView
05-25 13:49:43.004 7242-7242/com.yunzhiyuan100.wish D/Linghu MineFragment.onViewCreated: ===================MineFragment===onViewCreated
05-25 13:49:43.004 7242-7242/com.yunzhiyuan100.wish D/Linghu MineFragment.onActivityCreated: ===================MineFragment===onActivityCreated
05-25 13:49:43.005 7242-7242/com.yunzhiyuan100.wish D/Linghu FindFragment.onStart: ===================FindFragment===onStart
05-25 13:49:43.005 7242-7242/com.yunzhiyuan100.wish D/Linghu FindFragment.onResume: ===================FindFragment===onResume
05-25 13:49:43.006 7242-7242/com.yunzhiyuan100.wish D/Linghu MineFragment.onStart: ===================MineFragment===onStart
05-25 13:49:43.006 7242-7242/com.yunzhiyuan100.wish D/Linghu MineFragment.onResume: ===================MineFragment===onResume
MainActivity onCreate-----onStart-----onResume---------》HomeFragment onAttach------onCreate
FindFragment onAttach------onCreate
MineFragment onAttach------onCreate
HomeFragment onCreateView------onViewCreated-------onActivityCreeated---onStart-----onResume
FindFragment onCreateView------onViewCreated--------onActivityCreated
MineFragment onCreateView-------onViewCreated-------onActivityCreated
FindFragment onStart-------onResume
MineFragment onStart-------onResume
Activity 生命周期走到可见,然后依次执行Fragment的onAttach----onCreate, 然后依次onCreateView、onViewCreated、onActivityCreated,第一个Fragment的onstart、onResume一起执行了,然后最后是后两个Fragment的onStart、onResume。
2、下面是加入了setUserVisibleHint
Activity和Fragment的生命周期函数的顺序如下:
MainActivity onCreate-----onStart-----onResume-------------》 HomeFragment setUserVisibleHint(false)
FindFragment setUserVisibleHint(false)
MineFragment setUserVisibleHint(false)
HomeFragment setUserVisibleHint(true)
HomeFragment onAttach------onCreate
FindFragment onAttach------onCreate
MineFragment onAttach------onCreate
HomeFragment onCreateView------onViewCreated-------onActivityCreeated---onStart-----onResume
FindFragment onCreateView------onViewCreated--------onActivityCreated
MineFragment onCreateView-------onViewCreated-------onActivityCreated
FindFragment onStart-------onResume
MineFragment onStart-------onResume
切换tab,点击FindFagment
HomeFragment setUserVisibleHint(false)
FindFragment setUserVisibleHint(true)
切换tab,点击MineFragment
FindFragment===setUserVisibleHint(false)
MineFragment===setUserVisibleHint(true)
log如下:
05-25 14:11:09.453 8685-8685/com.yunzhiyuan100.wish D/Linghu MainActivity.onCreate: ============MainActivity===onCreate
05-25 14:11:09.454 8685-8685/com.yunzhiyuan100.wish D/Linghu MainActivity.onStart: ============MainActivity===onStart
05-25 14:11:09.456 8685-8685/com.yunzhiyuan100.wish D/Linghu MainActivity.onResume: ============MainActivity===onResume
05-25 14:11:09.481 8685-8685/com.yunzhiyuan100.wish D/Linghu HomeFragment.setUserVisibleHint: ===================HomeFragment===setUserVisibleHint(false)
05-25 14:11:09.482 8685-8685/com.yunzhiyuan100.wish D/Linghu FindFragment.setUserVisibleHint: ===================FindFragment===setUserVisibleHint(false)
05-25 14:11:09.482 8685-8685/com.yunzhiyuan100.wish D/Linghu MineFragment.setUserVisibleHint: ===================MineFragment===setUserVisibleHint(false)
05-25 14:11:09.483 8685-8685/com.yunzhiyuan100.wish D/Linghu HomeFragment.setUserVisibleHint: ===================HomeFragment===setUserVisibleHint(true)
05-25 14:11:09.484 8685-8685/com.yunzhiyuan100.wish D/Linghu HomeFragment.onAttach: ===================HomeFragment===onAttach
05-25 14:11:09.484 8685-8685/com.yunzhiyuan100.wish D/Linghu HomeFragment.onCreate: ===================HomeFragment===onCreate
05-25 14:11:09.484 8685-8685/com.yunzhiyuan100.wish D/Linghu FindFragment.onAttach: ===================FindFragment===onAttach
05-25 14:11:09.485 8685-8685/com.yunzhiyuan100.wish D/Linghu FindFragment.onCreate: ===================FindFragment===onCreate
05-25 14:11:09.485 8685-8685/com.yunzhiyuan100.wish D/Linghu MineFragment.onAttach: ===================MineFragment===onAttach
05-25 14:11:09.486 8685-8685/com.yunzhiyuan100.wish D/Linghu MineFragment.onCreate: ===================MineFragment===onCreate
05-25 14:11:09.486 8685-8685/com.yunzhiyuan100.wish D/Linghu HomeFragment.onCreateView: ===================HomeFragment===onCreateView
05-25 14:11:09.609 8685-8685/com.yunzhiyuan100.wish D/Linghu HomeFragment.onViewCreated: ===================HomeFragment===onViewCreated
05-25 14:11:09.609 8685-8685/com.yunzhiyuan100.wish D/Linghu HomeFragment.onActivityCreated: ===================HomeFragment===onActivityCreated
05-25 14:11:09.615 8685-8685/com.yunzhiyuan100.wish D/Linghu HomeFragment.onStart: ===================HomeFragment===onStart
05-25 14:11:09.615 8685-8685/com.yunzhiyuan100.wish D/Linghu HomeFragment.onResume: ===================HomeFragment===onResume
05-25 14:11:09.616 8685-8685/com.yunzhiyuan100.wish D/Linghu FindFragment.onCreateView: ===================FindFragment===onCreateView
05-25 14:11:09.646 8685-8685/com.yunzhiyuan100.wish D/Linghu FindFragment.onViewCreated: ===================FindFragment===onViewCreated
05-25 14:11:09.646 8685-8685/com.yunzhiyuan100.wish D/Linghu FindFragment.onActivityCreated: ===================FindFragment===onActivityCreated
05-25 14:11:09.646 8685-8685/com.yunzhiyuan100.wish D/Linghu MineFragment.onCreateView: ===================MineFragment===onCreateView
05-25 14:11:09.695 8685-8685/com.yunzhiyuan100.wish D/Linghu MineFragment.onViewCreated: ===================MineFragment===onViewCreated
05-25 14:11:09.695 8685-8685/com.yunzhiyuan100.wish D/Linghu MineFragment.onActivityCreated: ===================MineFragment===onActivityCreated
05-25 14:11:09.695 8685-8685/com.yunzhiyuan100.wish D/Linghu FindFragment.onStart: ===================FindFragment===onStart
05-25 14:11:09.696 8685-8685/com.yunzhiyuan100.wish D/Linghu FindFragment.onResume: ===================FindFragment===onResume
05-25 14:11:09.696 8685-8685/com.yunzhiyuan100.wish D/Linghu MineFragment.onStart: ===================MineFragment===onStart
05-25 14:11:09.696 8685-8685/com.yunzhiyuan100.wish D/Linghu MineFragment.onResume: ===================MineFragment===onResume
点击切换到FindFragment(第二个tab)
05-25 14:13:46.807 8685-8685/com.yunzhiyuan100.wish D/Linghu HomeFragment.setUserVisibleHint: ===================HomeFragment===setUserVisibleHint(false)
05-25 14:13:46.808 8685-8685/com.yunzhiyuan100.wish D/Linghu FindFragment.setUserVisibleHint: ===================FindFragment===setUserVisibleHint(true)
点击切换到MineFragment(第三个tab)
05-25 14:13:48.659 8685-8685/com.yunzhiyuan100.wish D/Linghu FindFragment.setUserVisibleHint: ===================FindFragment===setUserVisibleHint(false)
05-25 14:13:48.660 8685-8685/com.yunzhiyuan100.wish D/Linghu MineFragment.setUserVisibleHint: ===================MineFragment===setUserVisibleHint(true)
3、总结:
Activity 生命周期走到可见,然后先执行Fragment的setUserVisibleHint(false)并把第一个Fragment置setUserVisibleHint(true), 然后依次执行Fragment的onAttach----onCreate, 然后依次onCreateView、onViewCreated、onActivityCreated,第一个Fragment的onstart、onResume一起执行了,然后最后是后两个Fragment的onStart、onResume.
Fragment的setUserVisibleHint()执行会在onAttach方法前面。
如果点击切换Fragment的时候会调用切换两个Fragment的setUserVisibleHint(false-----true)。
Fragment的OnResume方法和Activity的OnResume方法是调用时机是一致。
Activity ViewPager Fragment框架的生命周期的更多相关文章
- 无废话Android之activity的生命周期、activity的启动模式、activity横竖屏切换的生命周期、开启新的activity获取他的返回值、利用广播实现ip拨号、短信接收广播、短信监听器(6)
1.activity的生命周期 这七个方法定义了Activity的完整生命周期.实现这些方法可以帮助我们监视其中的三个嵌套生命周期循环: (1)Activity的完整生命周期 自第一次调用onCrea ...
- Activity学习(二)——生命周期
一.什么是Activity? 简单的说:Activity就是布满整个窗口或者悬浮于其他窗口上的交互界面.在一个应用程序中通常由多个Activity构成,都会在Manifest.xml中指定一个主的Ac ...
- Android Fragment详解(二):Fragment创建及其生命周期
Fragments的生命周期 每一个fragments 都有自己的一套生命周期回调方法和处理自己的用户输入事件. 对应生命周期可参考下图: 创建片元(Creating a Fragment) To c ...
- fragment hide/show 生命周期
Fragment的使用越来越普遍了,掌握它的生命周期以及注意事项时非常有必要的,首先 All subclasses of Fragment must include a public empty co ...
- 深入了解asp.net框架。生命周期以及事件处理机制
刚接触asp.net框架觉得很好奇.他的快速开发是怎么实现的.控件的状态又是怎么保持的.我们都知道http是无状态的.而且网上很多人都说使用asp.net框架使用服务器框架是非常慢的. 带着这些疑问我 ...
- activity学习(1) 生命周期理解
可以忽略onWindowFocusChanged.onSaveInstanceState.onRestoreInstanceState几个事件,这几个事件官网中的生命周期里面没有提到.忽略掉这几个方法 ...
- Android Activity横竖屏转换的生命周期
新创建一个Activity,用来此次测试. 先贴代码 package com.hugo.apj.activitylifetest; import android.support.v7.app.AppC ...
- [android] activity横竖屏切换的生命周期
模拟器横竖屏切换,ctrl+f11 界面activity会销毁,重新打开创建 第一种做法: 定死就是横屏 在清单文件,<activity/>节点部分,添加属性,设置屏幕朝向 android ...
- Django框架请求生命周期
先看一张图吧! 1.请求生命周期 - wsgi, 他就是socket服务端,用于接收用户请求并将请求进行初次封装,然后将请求交给web框架(Flask.Django) - 中间件,帮助我们对请求进行校 ...
随机推荐
- emacs之配置自动安装脚本
emacsConfig下建立install目录,结构大概这样 . ├── auto-complete-etags-setting.el ├── auto-complete-setting.el ├── ...
- TreeSet函数
TreeSet类的排序问题 TreeSet支持两种排序方法:自然排序和定制排序.TreeSet默认采用自然排序. 1.自然排序 TreeSet会调用集合元素的compareTo(Object ob ...
- Ansible 系列之 Inventory 资源清单介绍
一.Inventory 库存清单文件 1.Inventory 作用 Ansible 可以在同一时间针对多个系统设施进行管理工作.它通过选择Ansible 资源清单文件中列出的系统,该清单文件默认是在/ ...
- python 主要模块和方法
******************** PY核心模块方法 ******************** os模块: os.remove() 删除文件 os.unlink() 删除文件 os.rename ...
- Python多级菜单
作业2:多级菜单三级菜单可依次选择进入各子菜单所需新知识点:列表.字典 1.流程图 2.登录界面,输入对应索引 #!/usr/bin/env python3 # -*- coding:utf-8 -* ...
- scrapy与redis实战
从零搭建Redis-Scrapy分布式爬虫 Scrapy-Redis分布式策略: 假设有四台电脑:Windows 10.Mac OS X.Ubuntu 16.04.CentOS 7.2,任意一台电脑都 ...
- unicat,multicast,broadcast区别
单播.多播和广播单播”(Unicast).“多播”(Multicast)和“广播”(Broadcast)这三个术语都是用来描述网络节点之间通讯方式的术语.那么这些术语究竟是什么意思?区别何在? 1.单 ...
- svn can't save server certificate
f I use any svn command communicating with the remote server I get the following error: Error valida ...
- 一个简单的MVVM雏形
这是@尚春实现的MVVM,使用定时器轮询,只支持{{}}与input.value的修改. 这只能算是一个玩具,真正的MVVM需要有更复杂的扫描机制,JS解析器,双向绑定链什么的. <!DOCTY ...
- ArcGIS帮助文档VS帮助文档不能复制图片的解决方法
ArcGIS帮助文档VS帮助文档不能复制图片的解决方法(非常有用) 问题:ArcGIS的学习文档,开发文档,vs的帮助文档,一般都不能复制图片,有的甚至不能复制文本. 解决方法 在文档空白处右 ...