Fragment 深度解析_2: fragment生命周期详解

本文深入探讨了Fragment的生命周期,特别是在Activity的不同状态下如何启动和销毁。分析了在Activity Paused前后Fragment的生命周期变化,并通过实验展示了Fragment替换时,是否加入回退栈对生命周期的影响。重点讨论了回退栈中的Fragment如何响应用户操作,如返回键的点击,以及Fragment的完整销毁过程。
摘要由CSDN通过智能技术生成

我们先套用安卓官网给的一张Activity对应Fragment的生命周期图:
这里写图片描述
上面的图说明了Fragment跟Activity之间的关系。这张图的前提条件是什么呢?在什么情况下成立呢?对于我们新手来说,需要说明一下这个问题。

1、 Fragment的启动(Activity 在Paused之前状态)

我们可以分两种情况来说明:
第一种:在Activity的启动过程中,我们在activity的生命周期中添加了的Fragment会随着上图走,并且会追赶上Activity的生命周期,假如我们在Activity的onStart方法中添加了Fragment,那么我们的Fragment会自动调用onStart之前的生命周期方法。
第二种:在Activity启动完成以后其实还是跟上面的理解一样,我们当前Activity
执行过onResume方法了,所以我们在使用Fragment的时候,fragment会自动的点用onPause之前的生命周期的方法。

2、Fragment的销毁 (Activity 的Paused之后的状态)

销毁还的分两种情况:
第一种:Activity自己销毁的过程中所有的Fragment会跟随Activity调用,我做了一个有趣的实验。在Activity执行onPause()方法时我加入了这么一段代码

      @Override
    protected void onPause() {
        super.onPause();
getSupportFragmentManager().beginTransaction().addToBackStack(null).replace(R.id.container_id, new FragmentLifecycle2()).commit();
    }

你们猜效果会怎样?当我按下锁屏键的时候,Activity会执行onResume,onStop方法

06-25 14:47:40.631 30961-30961/com.lj.test I/com.lj.test.FragmentLifecycle2: onAttach
    onCreate
06-25 14:47:40.632 30961-30961/com.lj.test I/com.lj.test.FragmentLifecycle: onStop
06-25 14:47:40.633 30961-30961/com.lj.test I/com.lj.test.FragmentLifecycle: onDestroyView
06-25 14:47:40.636 30961-30961/com.lj.test I/com.lj.test.FragmentLifecycle2: onCreateView
06-25 14:47:40.659 30961-30961/com.lj.test I/com.lj.test.FragmentLifecycle2: onViewCreated
    onActivityCreated
    onStart
06-25 14:47:40.664 30961-30961/com.lj.test I/com.lj.test.FragmentLifecycle: onSaveInstanceState
06-25 
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值