Fragment生命周期(add,replace,息屏等情况)

来源:互联网 发布:购物软件哪个好 编辑:程序博客网 时间:2024/06/08 18:47


1.replace(添加到回退栈)

(1)假设线add了一个Frg0,然后通过replace替换为Frg1,则其生命周期如下,可以看到,Frg0只执行到了onDestoryView.

03-14 19:41:15.742 15972-15972/com.example.gxf.fragmentanimtest D/--tag--: onCreate: ---Frg0
03-14 19:41:15.742 15972-15972/com.example.gxf.fragmentanimtest D/--tag--: onCreateView: ---Frg0
03-14 19:41:15.746 15972-15972/com.example.gxf.fragmentanimtest D/--tag--: onActivityCreated: ---Frg0
03-14 19:41:15.747 15972-15972/com.example.gxf.fragmentanimtest D/--tag--: onStart: ---Frg0
03-14 19:41:15.747 15972-15972/com.example.gxf.fragmentanimtest D/--tag--: onResume: ---Frg0
03-14 19:41:22.818 15972-15972/com.example.gxf.fragmentanimtest D/--tag--: onPause: ---Frg0
03-14 19:41:22.818 15972-15972/com.example.gxf.fragmentanimtest D/--tag--: onStop: ---Frg0
03-14 19:41:22.819 15972-15972/com.example.gxf.fragmentanimtest D/--tag--: onDestroyView: ---Frg0
03-14 19:41:22.823 15972-15972/com.example.gxf.fragmentanimtest D/--tag--: onCreate: ---Frg1
03-14 19:41:22.824 15972-15972/com.example.gxf.fragmentanimtest D/--tag--: onCreateView: ---Frg1
03-14 19:41:22.832 15972-15972/com.example.gxf.fragmentanimtest D/--tag--: onActivityCreated: ---Frg1
03-14 19:41:22.832 15972-15972/com.example.gxf.fragmentanimtest D/--tag--: onStart: ---Frg1
03-14 19:41:22.833 15972-15972/com.example.gxf.fragmentanimtest D/--tag--: onResume: ---Frg1

(2)接着上一步,点击返回键,其生命周期如下,可以知道当Frg0处于可交互状态时,Frg0才会销毁

03-14 19:47:17.315 15972-15972/com.example.gxf.fragmentanimtest D/--tag--: onPause: ---Frg1
03-14 19:47:17.315 15972-15972/com.example.gxf.fragmentanimtest D/--tag--: onStop: ---Frg1
03-14 19:47:17.315 15972-15972/com.example.gxf.fragmentanimtest D/--tag--: onDestroyView: ---Frg1
03-14 19:47:17.316 15972-15972/com.example.gxf.fragmentanimtest D/--tag--: onCreateView: ---Frg0
03-14 19:47:17.320 15972-15972/com.example.gxf.fragmentanimtest D/--tag--: onActivityCreated: ---Frg0
03-14 19:47:17.320 15972-15972/com.example.gxf.fragmentanimtest D/--tag--: onStart: ---Frg0
03-14 19:47:17.320 15972-15972/com.example.gxf.fragmentanimtest D/--tag--: onResume: ---Frg0
03-14 19:47:17.735 15972-15972/com.example.gxf.fragmentanimtest D/--tag--: onDestory: ---Frg1

03-14 19:47:17.735 15972-15972/com.example.gxf.fragmentanimtest D/--tag--: onDetach: ---Frg1

  2.add(添加到回退栈)

(1)先add一个Frg0,然后add一个Frg1,生命周期如下,可以看到,当添加Frg1时,Frg0仍然处于onResume()状态。

03-14 19:57:58.242 23376-23376/com.example.gxf.fragmentanimtest D/--tag--: onCreate: ---Frg0
03-14 19:57:58.242 23376-23376/com.example.gxf.fragmentanimtest D/--tag--: onCreateView: ---Frg0
03-14 19:57:58.245 23376-23376/com.example.gxf.fragmentanimtest D/--tag--: onActivityCreated: ---Frg0
03-14 19:57:58.245 23376-23376/com.example.gxf.fragmentanimtest D/--tag--: onStart: ---Frg0
03-14 19:57:58.245 23376-23376/com.example.gxf.fragmentanimtest D/--tag--:
onResume: ---Frg0
03-14 19:58:02.909 23376-23376/com.example.gxf.fragmentanimtest D/--tag--: onCreate: ---Frg1
03-14 19:58:02.909 23376-23376/com.example.gxf.fragmentanimtest D/--tag--: onCreateView: ---Frg1
03-14 19:58:02.916 23376-23376/com.example.gxf.fragmentanimtest D/--tag--: onActivityCreated: ---Frg1
03-14 19:58:02.916 23376-23376/com.example.gxf.fragmentanimtest D/--tag--: onStart: ---Frg1
03-14 19:58:02.917 23376-23376/com.example.gxf.fragmentanimtest D/--tag--:onResume: ---Frg1

(2)点击返回键(从Frg1切换到Frg0),生命周期如下,Frg会完全销毁,Frg0的生命周期没有任何变化(仍处于onResume)

03-14 19:58:10.474 23376-23376/com.example.gxf.fragmentanimtest D/--tag--: onPause: ---Frg1
03-14 19:58:10.474 23376-23376/com.example.gxf.fragmentanimtest D/--tag--: onStop: ---Frg1

03-14 19:58:10.475 23376-23376/com.example.gxf.fragmentanimtest D/--tag--: onDestroyView: ---Frg1
03-14 19:58:10.894 23376-23376/com.example.gxf.fragmentanimtest D/--tag--: onDestroy: ---Frg1
03-14 19:58:10.895 23376-23376/com.example.gxf.fragmentanimtest D/--tag--: onDetach: ---Frg1


综上:

当用add时点击返回键,前面的Fragment状态不变;当用replace时点击返回键,前面的Fragment会重新执行onCReatView().


3.息屏

03-14 20:21:46.622 23376-23376/com.example.gxf.fragmentanimtest D/--tag--: onPause: ---Frg0
03-14 20:21:46.687 23376-23376/com.example.gxf.fragmentanimtest D/--tag--: onStop: ---Frg0

     再次亮屏
03-14 20:21:47.025 23376-23376/com.example.gxf.fragmentanimtest D/--tag--: onStart: ---Frg0
03-14 20:21:47.029 23376-23376/com.example.gxf.fragmentanimtest D/--tag--: onResume: ---Frg0

0 0
原创粉丝点击