我们先套用安卓官网给的一张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