Activity和Fragment生命周期变化
情形一:启动应用加载Activity和Fragment
Activity::onCreate
Fragment::onAttach
Fragment::onCreate
Fragment::onCreateView
Fragment::onActivityCreate
Activity::onStart
Fragment::onSatrt
Activity::onResume
Fragment::onResume
情形二:fragA->fragB->fragA(Fragment不加入回退栈)
销毁FragmentA:
启动FragmentB:
销毁FragmentB:
启动FragmentA:
启动过程如下
onAttach
onCreate
onCreateView
onActivityCreate
onSatrt
onResume
销毁过程如下:
onPause
onStop
onDestroyView
onDestroy
onDetach
在不加入回退栈的情况下,无论多少Fragment之间的切换,都遵循启动下一个,销毁上一个的原则,在屏幕不旋转的情况下Activity是不会发生任何变化的
情形三:旋转Fragment(与加不加入回退栈没关系,过程都一样)
Activity和Fragment都会被销毁,其中销毁过程Fragment会保存状态
Fragment::onPause
Activity::onPause
Fragment::onSaveInstanceState(保存销毁前的状态)
Fragment::onStop
Activity onStop
Fragment::onDestroyView
Fragment::onDestroy
Fragment::onDetach
Activity::onDestroy
创建Activity和Fragment(与一开始启动应用过程相同)
Activity::onCreate
Fragment::onAttach
Fragment::onCreate
Fragment::onCreateView
Fragment::onActivityCreated
Fragment::onAttach
Fragment::onCreate
Fragment::onCreateView
Fragment::onActivityCreated
Activity onStart
Fragment::onStart
Fragment::onStart
Activity::onResume
Fragment::onResume
Fragment::onResume
情形四:FragmentA->FragmentB->FragmentA(两者都加入回退栈)
停止FragmentA,但是不销毁,与不加入回退栈相比唯一的不同就是不会被销毁
FragmentA::onPause
FragmentA::onStop
FragmentA::onDestroyView
启动FragmentB
"恢复"FragmentA,这种恢复会从Fragment的onCreateView开始,重新绘制页面,所以之前的所有数据都已经不在了,这就涉及到Fragment的状态保存(下节待续)
onCreateView
onActivityCreated
onStart
onResume
最新文章
- springboot maven install 找不到符号
- java 24 - 6 GUI之 创建只能输入数字的文本框
- springmvc4+hibernate4+spring4注解一对多级联保存
- 堆block和栈block的区分
- CentOS 6.4安装Kangle面板
- TreeView控件的CheckBox级联选中或取消
- node搜索codeforces 3A - Shortest path of the king
- C#实现异步编程的两个简单机制(异步委托&;定时器)及Thread实现多线程
- 解决WEB(apache)服务器time_wait过高的性能优化过程
- wpf的学习日志(一)
- Eclipse使用之杂七杂八
- 在python中编写socket服务端模块(二):使用poll或epoll
- WCF技术剖析之八:ClientBase<;T>;中对ChannelFactory<;T>;的缓存机制
- C++中出现的计算机术语2
- 使用ListView控件展示数据
- MineSite
- Nginx详解五:Nginx基础篇之HTTP请求
- Awesome Python 中文版
- javascript中的for in循环和for in循环的使用陷阱
- Spring MVC异常统一处理的三种方式