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框架的生命周期的更多相关文章

  1. 无废话Android之activity的生命周期、activity的启动模式、activity横竖屏切换的生命周期、开启新的activity获取他的返回值、利用广播实现ip拨号、短信接收广播、短信监听器(6)

    1.activity的生命周期 这七个方法定义了Activity的完整生命周期.实现这些方法可以帮助我们监视其中的三个嵌套生命周期循环: (1)Activity的完整生命周期 自第一次调用onCrea ...

  2. Activity学习(二)——生命周期

    一.什么是Activity? 简单的说:Activity就是布满整个窗口或者悬浮于其他窗口上的交互界面.在一个应用程序中通常由多个Activity构成,都会在Manifest.xml中指定一个主的Ac ...

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

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

  4. fragment hide/show 生命周期

    Fragment的使用越来越普遍了,掌握它的生命周期以及注意事项时非常有必要的,首先 All subclasses of Fragment must include a public empty co ...

  5. 深入了解asp.net框架。生命周期以及事件处理机制

    刚接触asp.net框架觉得很好奇.他的快速开发是怎么实现的.控件的状态又是怎么保持的.我们都知道http是无状态的.而且网上很多人都说使用asp.net框架使用服务器框架是非常慢的. 带着这些疑问我 ...

  6. activity学习(1) 生命周期理解

    可以忽略onWindowFocusChanged.onSaveInstanceState.onRestoreInstanceState几个事件,这几个事件官网中的生命周期里面没有提到.忽略掉这几个方法 ...

  7. Android Activity横竖屏转换的生命周期

    新创建一个Activity,用来此次测试. 先贴代码 package com.hugo.apj.activitylifetest; import android.support.v7.app.AppC ...

  8. [android] activity横竖屏切换的生命周期

    模拟器横竖屏切换,ctrl+f11 界面activity会销毁,重新打开创建 第一种做法: 定死就是横屏 在清单文件,<activity/>节点部分,添加属性,设置屏幕朝向 android ...

  9. Django框架请求生命周期

    先看一张图吧! 1.请求生命周期 - wsgi, 他就是socket服务端,用于接收用户请求并将请求进行初次封装,然后将请求交给web框架(Flask.Django) - 中间件,帮助我们对请求进行校 ...

随机推荐

  1. Eclipse实用用快捷键

    1.ctrl+shift+o 添加必须import并删除无用import.代码被改动时容易产生很多无用引用,此时这个快捷键就可以一次把如下的引用删掉了

  2. JZ2440 裸机驱动 第5章 GPIO接口

    本章目标:     掌握嵌入式开发的步骤:编程.编译.烧写程序.运行     通过GPIO的操作了解软件如何控制硬件 5.1 GPIO硬件介绍     S3C2440A有130个多功能输入/输出口引脚 ...

  3. emacs之配置gtags

    ~/emacsConfig/gtags-setting.el (if (eq system-type 'darwin) (add-to-list 'load-path "/usr/local ...

  4. RelativeLayout相对布局 各个属性详解

    RelativeLayout相对布局 相对布局 RelativeLayout 允许子元素指定它们相对于其父元素或兄弟元素的位置,这是实际布局中最常用的布局方式之一.它灵活性大很多,当然属性也多,操作难 ...

  5. (转)为C# Windows服务添加安装程序

    本文转载自:http://kamiff.iteye.com/blog/507129 最近一直在搞Windows服务,也有了不少经验,感觉权限方面确定比一般程序要受限很多,但方便性也很多.像后台运行不阻 ...

  6. pytest框架 里 fixture 参数化的方法

  7. 九jQuery源码解析之.each()

    jQuery中存在两个each方法都是用于遍历的, 一个是对jQuery对象集合使用.each(),用于遍历这个集合; .each(function(index,element)) 还有一个是扩展jQ ...

  8. canvas设置渐变

    canvas设置渐变 方法 createLinearGradient(x1, y1, x2, y2) 线性渐变 createRadialGradient(x1, y1, r1, x2, y2, r2) ...

  9. oracle账户密码更新

    oracle忘记用户名密码怎样恢复 首先cmd - sqlplusw 普通用户登陆:用户名:scott(普通用户名)      密码:tiger(普通用户密码) 管理员登陆:用户名:system 密码 ...

  10. mybatis 学习五 二级缓存不推荐使用

    mybatis 二级缓存不推荐使用 一 mybatis的缓存使用. 大体就是首先根据你的sqlid,参数的信息自己算出一个key值,然后你查询的时候,会先把这个key值去缓存中找看有没有value,如 ...