为解决使用第三方沉浸栏的问题而调试
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.pngfragment之间的切换
image.png没两条日志,对应着一次点击,一个Fragment的隐藏和另一个Fragment的显示.
跳转到新的SecondActivity
从第三个fragment
进入SecondActivity
显示中止了4个Fragment,注意中止fragment
的顺序;然后中止MainActivity
,然后依次停止Fragment
和MainActivity
SecondActivity
返回到MainActivity
image.png
从日志可以看出,走了MainActivity的onRestart
方法后,依次走了fragment的onStart
方法,并不走fragment的onHiddenChanged
的方法。
回到当前页面走的是最后一个fragment的onResume
方法,所以在设置顶部状态的时候,取决于最后一个fragment的设置。
网友评论