Activity和Fragment的生命周期
Activity生命周期
Activity的完整生命周期函数包括:
onCreate, onStart,onResume,onPause,onStop,onDestory
Activity打开另外一个正常的Activity时
MainAcitivity打开SecondActivity:

从SecondActivity中返回MainActivity的时候:

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

从DialogActivity退出时:

Fragment生命周期
Fragment的完整的生命周期函数包括:
onAttach,onCreate,onCreateView,onActivityCreated,onStart,onResume和onPause,onStop,onDestoryView,onDestory,onDetach。
以下介绍一下几种情况下,Fragment的生命周期函数和Activity的生命周期函数的调用顺序和时机。
Activity中静态添加了一个Fragment
MainActivity中 静态添加了一个LeftFragment(在layout中使用
Activity打开并显示时:

可以看到Fragment的生命周期函数的调用,与Activity的生命周期函数基本一致并且依赖于Activity的生命周期函数。
Activity的onCreate函数,除了会调用Fragment的onCreate函数之外,还包括了onAttach和onCreateView。
Activity的onStart函数,除了会调用Fragment的onStart之外还会先调用onActivityCreated。
点击返回键,关闭Activity时

对照启动Activity时的流程,与Activity的onCreate对应Fragment的onAttach,onCreate,onCreateView 相对的是,Activity的onDestory对应Fragment的onDestoryView, onDestory, onDetach。
Fragment的生命周期函数中,onActivityCreated是没有配对的函数的。这样成对的记忆会比较好记。
Activity中静态添加了一个Fragment
MainActivity的layout中使用的是FrameLayout,在onCreate中使用FragmentManager开启事务,添加一个LeftFragment。
Activity打开并显示时:

奇怪的是Fragment中原本跟Activity的onCreate对应的生命周期函数,都挪到了Activity的onStart之后执行了。
关闭Activity的情况,与静态添加的情况一致。
Activity有两个静态添加的Fragment
MainActivity中 静态添加了LeftFragment和RightFragment两个(在layout中使用

Activity打开并显示时:

需要特殊注意的还是onActivityCreated的调用时机。
点击返回键,关闭Activity时

