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. 列表查询SQL语句改造

    一个经常遇到到的场景,就是查询列表数据,列表数据由多张表构成 最简单的查询方法是先写一个查询单条数据的方法,比如这个方法中要查询十张表: 然后一个循环调用查单条的方法,这种逻辑上理解是比较简单的(因为 ...

  2. [转]无网络环境,在Windows Server 2008 R2和SQL Server 2008R2环境安装SharePoint2013 RT

    无网络环境,在Windows Server 2008 R2和SQL Server 2008R2环境安装SharePoint2013 RT,这个还有点麻烦,所以记录一下,下次遇到省得绕弯路.进入正题: ...

  3. Shell实现Unix进程间信息交换的几种方法

    本文将介绍在SCO OpenServer5.0.5系统中使用shell语言来实现进程间信息交换的几种方法: 使用命名管道实现进程间信息交换 使用kill命令和trap语句实现进程间信息交换 使用点命令 ...

  4. LCD RGB 控制技术讲解 — 时钟篇(上)

    时序图 下面是LCD RGB 控制的典型时序图  天啊,一下就上这玩意,怎么看??? 其实要解释上面的时序图,我们还需要了解一些LCD的显示过程.所以现在只是有个印象,稍后我们详细讲解. LCD显示流 ...

  5. ScheduledExecutorService 定时器用法

    1,如果只是想简单的写个定时任务,比如10分钟跑一次,那么ScheduledExecutorService是比较方便的,下面举个简单的例子 import java.util.concurrent.Ex ...

  6. Ubuntu12.10下Python(pyodbc)访问SQL Server解决方案

    一.基本原理 请查看这个网址,讲得灰常详细:http://www.jeffkit.info/2010/01/476/   二.实现步骤 1.安装linux下SQL Server的驱动程序 安装Free ...

  7. py基础4--迭代器、装饰器、软件开发规范

    本节内容 迭代器&生成器 装饰器 Json & pickle 数据序列化 软件目录结构规范 作业:ATM项目开发 1. 列表生成式,迭代器&生成器 列表生成式 我现在有个需求, ...

  8. 手工编写servlet

    index.jsp: <%@ page language="java" import="java.util.*" contentType="te ...

  9. 【POJ】1185 炮兵阵地(状压dp)

    题目 传送门:QWQ 分析 看到$ M<=10 $考虑状压. 然后把每行都压一下,那么每个状态相关的就是上一行和上上行的状态. 然后枚举. 然后复杂度最坏是$ O(100 \times 1024 ...

  10. JSON格式化工具推荐

    JSON以其独特的简洁方便及与Javscript的无缝集成在WEB2.0时瓦风靡全球.   不过做为开发者,当看到一段很长的未格式化的JSON代码时,你会不会感到头晕? {"meta&quo ...