活动有4种状态 : 运行状态,暂停状态,停止状态,销毁状态 .一共有四种状态
恢复系统回收activity中存在的数据和状态
刚刚打开界面,就激活了前两个页面, 12-04 19:54:27.899 19531-19531/com.ncuhome.usconnection E/TAG: ZXZ:onAttach 1 12-04 19:54:27.899 19531-19531/com.ncuhome.usconnection E/TAG: ZXZ:onCreate 2 12-04 19:54:27.909 19531-19531/com.ncuhome.usconnection E/TAG: ZXZ:onCreateView 3 12-04 19:54:27.999 19531-19531/com.ncuhome.usconnection E/TAG: ZXZ:onActivityCreated 4 12-04 19:54:27.999 19531-19531/com.ncuhome.usconnection E/TAG: ZXZ:onStart 5 12-04 19:54:27.999 19531-19531/com.ncuhome.usconnection E/TAG: ZXZ:onResume 6 12-04 19:54:27.999 19531-19531/com.ncuhome.usconnection E/TAG: YYXZ:onAttach 1 12-04 19:54:27.999 19531-19531/com.ncuhome.usconnection E/TAG: YYXZ:onCreate 2 12-04 19:54:27.999 19531-19531/com.ncuhome.usconnection E/TAG: YYXZ:onCreateView 3 12-04 19:54:28.009 19531-19531/com.ncuhome.usconnection E/TAG: YYXZ:onActivityCreated 4 12-04 19:54:28.009 19531-19531/com.ncuhome.usconnection E/TAG: YYXZ:onStart 5 12-04 19:54:28.009 19531-19531/com.ncuhome.usconnection E/TAG: YYXZ:onResume 6 12-04 19:54:30.029 19531-19531/com.ncuhome.usconnection E/TAG: {"email":"[email protected]","phone":{"home":"08947 000000","mobile":"9999999999"},"name":"Ravi Tamada"} 转到第二个界面的时候,第三个界面执行到激活状态 12-04 20:31:32.539 26430-26430/com.ncuhome.usconnection E/TAG: BGS:onAttach 1 12-04 20:31:32.539 26430-26430/com.ncuhome.usconnection E/TAG: BGS:onCreate 2 12-04 20:31:32.539 26430-26430/com.ncuhome.usconnection E/TAG: BGS:onCreateView 3 12-04 20:31:32.549 26430-26430/com.ncuhome.usconnection E/TAG: BGS:onActivityCreated 4 12-04 20:31:32.549 26430-26430/com.ncuhome.usconnection E/TAG: BGS:onStart 5 12-04 20:31:32.549 26430-26430/com.ncuhome.usconnection E/TAG: BGS:onResume 6 转到第三个界面 , 第一个界面执行到9 12-04 20:32:45.939 26430-26430/com.ncuhome.usconnection E/TAG: ZXZ:onPause 7 12-04 20:32:45.949 26430-26430/com.ncuhome.usconnection E/TAG: ZXZ:onStop 8 12-04 20:32:45.949 26430-26430/com.ncuhome.usconnection E/TAG: ZXZ:onDestroyView 9 转到第四个界面 , 第二个界面执行到9 12-04 20:33:28.349 26430-26430/com.ncuhome.usconnection E/TAG: YYXZ:onPause 7 12-04 20:33:28.349 26430-26430/com.ncuhome.usconnection E/TAG: YYXZ:onStop 8 12-04 20:33:28.349 26430-26430/com.ncuhome.usconnection E/TAG: YYXZ:onDestroyView 9 返回到办公室的下一个界面,办公室激活 从onCreateView 开始执行.在onCreateView 中获取死掉后的信息???? 先激活后杀死 12-04 20:37:19.079 26430-26430/com.ncuhome.usconnection E/TAG: BGS:onCreateView 3 12-04 20:37:19.089 26430-26430/com.ncuhome.usconnection E/TAG: BGS:onActivityCreated 4 如果用了addToBackStack()方法.这样视图并不会被销毁 12-04 20:37:19.089 26430-26430/com.ncuhome.usconnection E/TAG: BGS:onStart 5 12-04 20:37:19.089 26430-26430/com.ncuhome.usconnection E/TAG: BGS:onResume 6 在第一个界面,点击第三个界面,先激活第三个界面,在让第一个界面执行到9
结论, 打开页面一直执行到碎片已经激活状态,,,,始终保持显示的这个界面的左右两个界面出于激活状态,其他界面只执行到 9
1 运行状态
碎片可见,且与之关联的活动处于运行状态. ---> 碎片处于运行状态
2 暂停状态
活动进入暂停状态时,(另一个未占满屏幕的活动被添加到栈顶),与它相关联的碎片就进入了暂停状态.
3.停止状态(停止状态的碎片完全不可见)
活动处于停止状态的时候,碎片就处于停止状态,或者调用FragmentTransaction的remove() replace()方法将碎片从活动中移除 , 但有在事务提交之前调用addToBackStack()方法.就会进入停止状态,有可能被系统回收
当然如果在替换的时候没有调用addToBackStack()方法,此时的RightFragment就会进入销毁状态,onDestroy()和onDetach()方法就会得到执行。
4 销毁状态
另外值得一提的是,在碎片中你也是可以通过onSaveInstanceState()方法来保存数据的,因为进入停止状态的碎片有可能在系统内存不足的时候被回收。保存下来的数据在onCreate()、onCreateView()和onActivityCreated()这三个方法中你都可以重新得到,它们都含有一个Bundle类型的savedInstanceState参数。具体的代码我就不在这里给出了,如果你忘记了该如何编写可以参考博客:
- onAttach() 碎片和活动关联时调用
- onCreate() 创建Fragment时调用,在这里必须初始化Fragment的基础组件
- onCreateView() Fragment要绘制自己的界面时调用(加载布局),这个方法必须返回Fragment的layout,也可以返回null(表示没有界面)
- onActivityCreated() 当Activity对象完成自己的onCreate方法时调用,确保与碎片相关联的activity已经调用且完毕.
- onStart() Fragment的UI可见时调用
- onResume() Fragment的UI可交互时调用
- onPause() Fragment 可见但不可交互时调用
- onStop() Fragment 完全不可见时调用
- onDestroyView() Fragment 移除视图时调用 (布局被移除时调用) 调用完了就进入了停止状态
- onDestroy() 清理View资源时调用
- onDetach() 碎片与活动解除关联时调用
时间: 2024-12-29 12:36:58