Fragment 1 切换到 Fragment 2时生命周期变化

1、通过 add hide show 方式来切换 Fragment

  • Fragment1 的生命周期变化为:onCreate()、onCreateView、onStart()、onResume() 回调 onHiddenChanged() 方法

  • Fragment2 的生命周期变化为: onCreate()、onCreateView、onStart()、onResume()

  • Fragment 2 再次返回到 Fragment 1:不走任何生命周期方法但是回调 onHiddenChanged()方法

总结:当以这种方式进行 Fragment 1 与 Fragment 2 的切换时,Fragment 隐藏的时候并不走 onDestroyView,所有的显示也不会走 onCreateView 方法,所有的 view 都会保存在内存

2、使用 replace 的方法进行切换时

  • 载入Fragment 1时:

Fragment 1的生命周期:onCreate()、onCreateView()、onStart()、onResume()

  • 切换到Fragment2时:

Fragment 1的生命周期:onPause()、onStop()、onDestroyView()、onDestroy()

Fragment 2的生命周期:onCreate()、onCreateV()、onStart()、onResume()

  • Fragment 2切换回Fragment 1时:

Fragment2的生命周期:onPause()、onStop()、onDestroyView()、onDestroy()

Fragment 1的生命周期:onCreate()、onCreateV()、onStart()、onResume()

总结:通过 replace 方法进行替换的时,Fragment 都是进行了销毁,重建的过程,相当于走了一整套的生命周期

3、使用 ViewPager 进行切换时

当使用 ViewPager 与 Fragment 进行切换时,Fragment 会进行预加载操作

所有的 Fragment 都会提前初始--->预加载;

初始化时 Fragment 们的生命周期:

Fragment 1 的生命周期:onCreate()、onCreateView()
Fragment 2 的生命周期:onCreate()、 onCreateView()

Fragment 1 切换到 Fragment 2 的生命周期:

Fragment 1 :不走任何生命周期;
Fragment 2 :走 setUserVisVleHint()方法

切回去也是一样的

注意: setUserVisVleHint()方法在 Fragment 1 第一次加载的时候不走,只有在切换的时候 走该方法

具体加载数据的代码

    /**
* 判断是否是初始化Fragment
*/
private boolean mIsHasStarted = false; /**
* 本方法会在ViewPager + Fragment结合时会执行
* 初始化时会执行两次,一次在 onCreate 之前 isVisibleToUser 为false,
* 另一次在 onCreate 之后 isVisibleToUser 为true
* @param isVisibleToUser
*/
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser) {
setHotUnClick(DELAY_WHEN_APPEAR);
mIsHasStarted = true;
Logcat.i(TAG, "Start interface 开始界面");
} else {
if (mIsHasStarted) {
mIsHasStarted = false;
Logcat.i(TAG, "End interface 结束界面");
}
}
}

Activity 切换到 Fragment 的生命周期变化

Fragment 的生命周期变化为:onStart()、onResume()

从 Fragment 1 进行锁屏操作

Fragment 的生命周期方法:onPause()、onSaveInstanceState()、onStop()。

从解锁 到 Fragment 1 的生命周期

onStart()、 onResume()

链接:https://www.jianshu.com/p/c8f34229b6dc

Fragment与Fragment相互切换之间的生命周期方法的更多相关文章

  1. Android Fragment 隐藏或显示时调用的生命周期方法

    Fragment使用方式大体分两种: 大家要注意不同的Fragment使用方法,Fragment隐藏和显示调用的生命周期方法是不同的,以下是Fragment显示隐藏调用的方法: //判断是否展示—与V ...

  2. Fragment生命周期与Fragment执行hide、show后的生命周期探讨

    一.Fragment 生命周期中的每个方法的意义与作用: 1.setUserVisibleHint()(此方法不属于生命周期方法):设置Fragment 用户可见或不可见时调用此方法,此方法在Frag ...

  3. Activity切换的时候生命周期的变化

    之前在做笔试题的时候遇到一个问题:Activity A切换到ActivityB时,A和B的生命周期变化. 事实上,它们的生命周期变化是这样的: 1.A的onPause()方法被执行. 2.B的onCr ...

  4. Android 中Activity生命周期分析:Android中横竖屏切换时的生命周期过程

    最近在面试Android,今天出了一个这样的题目,即如题: 我当时以为生命周期是这样的: onCreate --> onStart -- ---> onResume ---> onP ...

  5. Android零基础入门第75节:Activity状态和生命周期方法

    前面两期我们学习了Activity的创建和注册.以及启动和关闭,也学会了重写onCraete方法,这些知识在实际开发中远远不够,还需要学习了解更多. 生命周期就是一个对象从创建到销毁的过程,每一个对象 ...

  6. 微信小程序开发之详解生命周期方法

    生命周期是指一个小程序从创建到销毁的一系列过程 在小程序中 ,通过App()来注册一个小程序 ,通过Page()来注册一个页面 先来看一张小程序项目结构 从上图可以看出,根目录下面有包含了app.js ...

  7. 微信小程序~生命周期方法详解

    生命周期是指一个小程序从创建到销毁的一系列过程 在小程序中 ,通过App()来注册一个小程序 ,通过Page()来注册一个页面 先来看一张小程序项目结构 从上图可以看出,根目录下面有包含了app.js ...

  8. Spring中Bean的生命周期方法

    Bean的生命周期方法 src\dayday\Car.java package dayday;import com.sun.org.apache.xpath.internal.SourceTree;i ...

  9. Activity的生命周期及各生命周期方法的作用

    一.Activity的生命周期中各个方法的作用 onCreate(): 做Activity上所需要数据的初始化工作. onStart(): 显示Activity界面,此时用户对界面可见但不可交互. o ...

随机推荐

  1. 个人简历模板web

    根据自己以前使用的简单简历表格,对其进行了web前端还原,也算对自己初步学习知识的一个小小的记录. 下面是简历预览效果,很简洁的那种: 代码中没什么太困难的地方,主要记录下自己遇到的几个小问题吧: 1 ...

  2. [翻译 EF Core in Action 1.6]你的第一个EF Core应用程序

    Entity Framework Core in Action Entityframework Core in action是 Jon P smith 所著的关于Entityframework Cor ...

  3. token:NLP之词形还原

    已迁移到我新博客,阅读体验更佳token:NLP之词形还原 完整代码实现放在我的github上:click me 一.任务描述 形态还原算法: 输入一个单词 如果词典里有该词,输出该词及其属性,转4, ...

  4. FontAwesome 图标字体库的使用

    在前端开发中,许多新手常会遇见一个问题,参考的网页上有类似下图的图标,但在资源里却找不到对应的文件,这是因为这些网页使用了图标库.这里介绍一种常见的图标库——FontAwesome的使用. 1.登录F ...

  5. 5分钟解决google play上架App设置隐私政策声明问题

    本文同步自javaexception 问题: 在我们的app上架到google play后,为了赚点小钱,就集成google ads,然而这会引发一个新的问题,那就是设置隐私政策声明的问题,通常我们会 ...

  6. Microsoft Edge浏览器下载文件乱码修复方法

    随着Windows10的普及,Microsoft Edge自带浏览器使用频率逐渐提升,在日常使用过程中我们会发现一个常规的问题是使用Edge进行日常文件下载的时候,N多情况下可能都是乱码,同样的下载链 ...

  7. hexo 报错 Cannot read property 'replace' of null

    详细错误信息: FATAL Cannot read property 'replace' of null TypeError: Cannot read property 'replace' of nu ...

  8. nginx反向代理配置

    最近在项目中使用nginx反向代理,根据不同的请求路径,将请求分发到不同服务.下面的示例主要完成如下功能 /prod/路径的请求分发到prod服务 /test/路径的请求分发到test服务 创建文件夹 ...

  9. LDAP概念和原理介绍

    LDAP概念和原理介绍 相信对于许多的朋友来说,可能听说过LDAP,但是实际中对LDAP的了解和具体的原理可能还比较模糊,今天就从“什么是LDAP”.“LDAP的主要产品”.“LDAP的基本模型”.“ ...

  10. [Swift]LeetCode1036.逃离大迷宫 | Escape a Large Maze

    In a 1 million by 1 million grid, the coordinates of each grid square are (x, y) with 0 <= x, y & ...