美文网首页
Activity与Fragment的交互时生命周期流程

Activity与Fragment的交互时生命周期流程

作者: ag4kd | 来源:发表于2019-09-29 15:51 被阅读0次

    为解决使用第三方沉浸栏的问题而调试

    Activity加载Fragment的流程

    Activity中有四个Fragment:

    mFragments.add(new MessageFragment());
    mFragments.add(new ContactsFragment());
    mFragments.add(new DiscoverFragment());
    mFragments.add(new MineFragment());
    
    

    Activity 启动到第一个Fragment出现

    方法
    MainActivity onCreate
    MessageFragment onHiddenChanged(hidden==true)
    MessageFragment onAttach
    MessageFragment onActivityCreated
    MessageFragment onHiddenChanged(hidden==false)
    MessageFragment onStart
    MainActivity onStart
    MainActivity onResume
    MessageFragment onResume

    启动后不点击其他的Fragment

    从第一用户界面MainActivity跳转到第二个SecondActivity

    跳转 方法 描述
    MessageFragment onPause Fragment先中止
    MainActivity onPause Fragment所在的Activity中止
    SecondActivity onCreate SecondActivity创建
    SecondActivity onStart SecondActivity启动
    SecondActivity onStart SecondActivity可交互
    MessageFragment onStop Fragment先停止
    MainActivity onStop Fragment所在的Activity停止

    从第二用户界面返回到第一个Activity

    返回 方法
    SecondActivity onPause
    MainActivity onRestart
    MessageFragment onStart
    MainActivity onStart
    MainActivity onResume
    MessageFragment onResume
    SecondActivity onStop
    SecondActivity onDestroy

    启动后点击其他的Fragment

    @Override
    public void onHiddenChanged(boolean hidden) {
        super.onHiddenChanged(hidden);
        Log.i("life", "onHiddenChanged  " + this.getClass().getSimpleName() + "  hidden =   " + hidden);
    }
    
    

    1、先点击第二个Fragment

    image.png

    从日志看出,是先隐藏了第一个Fragment,然后走了第二个Fragment走了跟第一个Fragment相同的生命周期函数。

    2、再点击第三个Fragment

    image.png

    从日志看出,是先隐藏了第二个Fragment,然后走了第三个Fragment走了跟第二个Fragment相同的生命周期函数。

    点击第四个日志逻辑是一样的:

    image.png

    启动--跳转--返回--切换的生命周期函数:

    image.png

    fragment之间的切换

    image.png

    没两条日志,对应着一次点击,一个Fragment的隐藏和另一个Fragment的显示.

    跳转到新的SecondActivity

    从第三个fragment进入SecondActivity

    image.png

    显示中止了4个Fragment,注意中止fragment的顺序;然后中止MainActivity,然后依次停止FragmentMainActivity

    SecondActivity返回到MainActivity

    image.png

    从日志可以看出,走了MainActivityonRestart方法后,依次走了fragmentonStart方法,并不走fragmentonHiddenChanged的方法。

    回到当前页面走的是最后一个fragment的onResume方法,所以在设置顶部状态的时候,取决于最后一个fragment的设置。

    相关文章

      网友评论

          本文标题:Activity与Fragment的交互时生命周期流程

          本文链接:https://www.haomeiwen.com/subject/swgfpctx.html