Activity和Fragment的生命周期

 

Activity生命周期

Activity的完整生命周期函数包括:

onCreate, onStart,onResume,onPause,onStop,onDestory

Activity打开另外一个正常的Activity时

MainAcitivity打开SecondActivity:

Activity和Fragment的生命周期_第1张图片

从SecondActivity中返回MainActivity的时候:

Activity和Fragment的生命周期_第2张图片

Activity打开一个DialogActivity时

MainActivity打开另一个Activity,这个DialogActivity是dialog风格的,没有全屏,所以MainActivity并没有完全不可见,因此不会调用onStoop方法。

Activity和Fragment的生命周期_第3张图片

从DialogActivity退出时:

Activity和Fragment的生命周期_第4张图片

 

Fragment生命周期

Fragment的完整的生命周期函数包括:

onAttach,onCreate,onCreateView,onActivityCreated,onStart,onResume和onPause,onStop,onDestoryView,onDestory,onDetach。

以下介绍一下几种情况下,Fragment的生命周期函数和Activity的生命周期函数的调用顺序和时机。

Activity中静态添加了一个Fragment

MainActivity中 静态添加了一个LeftFragment(在layout中使用标签添加的)

Activity打开并显示时:

Activity和Fragment的生命周期_第5张图片

可以看到Fragment的生命周期函数的调用,与Activity的生命周期函数基本一致并且依赖于Activity的生命周期函数。

Activity的onCreate函数,除了会调用Fragment的onCreate函数之外,还包括了onAttach和onCreateView。

Activity的onStart函数,除了会调用Fragment的onStart之外还会先调用onActivityCreated。

点击返回键,关闭Activity时

Activity和Fragment的生命周期_第6张图片

对照启动Activity时的流程,与Activity的onCreate对应Fragment的onAttach,onCreate,onCreateView 相对的是,Activity的onDestory对应Fragment的onDestoryView, onDestory, onDetach。

Fragment的生命周期函数中,onActivityCreated是没有配对的函数的。这样成对的记忆会比较好记。

Activity中静态添加了一个Fragment

MainActivity的layout中使用的是FrameLayout,在onCreate中使用FragmentManager开启事务,添加一个LeftFragment。

Activity打开并显示时:

Activity和Fragment的生命周期_第7张图片

奇怪的是Fragment中原本跟Activity的onCreate对应的生命周期函数,都挪到了Activity的onStart之后执行了。

关闭Activity的情况,与静态添加的情况一致。

Activity有两个静态添加的Fragment

MainActivity中 静态添加了LeftFragment和RightFragment两个(在layout中使用标签),效果如图。

Activity和Fragment的生命周期_第8张图片

Activity打开并显示时:

Activity和Fragment的生命周期_第9张图片

需要特殊注意的还是onActivityCreated的调用时机。

点击返回键,关闭Activity时

Activity和Fragment的生命周期_第10张图片

 

 

你可能感兴趣的:(android,学习笔记)