Activity&Fragment生命周期详解
来源:互联网 发布:php自动发卡平台源码 编辑:程序博客网 时间:2024/06/08 17:16
作者:Carson_Ho链接:http://www.jianshu.com/p/b1ff03a7bb1f來源:简书著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。Activity生命周期
先来看张官方说明图
详细解读每个方法的调用场景
- onCreate():当创建启动时调用
onStart():当处于可见状态时调用调用场景:Activity启动:onCreate()->onStart()->onResume
onResume ()调用场景:
- 当MainActivity第一次启动时:onCreate()->onStart()->onResume ;
- “The activity comes to the foreground”:即当前Activity被挡住一部分后(失去焦点,处于onPause状态)重新回到当前Activity时(UI最顶层)调用,比如说解屏、弹窗消失
- onPause()调用场景:“Activity comes to the foreground”,即当SecondActivity启动时且不完全挡住MainActivity时调用(即MainActivity不在UI最顶层,但依然可见,比如弹窗、锁屏,如下图便是MainActivity处于onPause()状态)
此时退出SecondActivity(点击Back键),即MainActivity重新回到当前Activity时(UI最顶层),调用onResume(),即onResume ()是在当前Activity被挡住一部分后(失去焦点,处于onPause状态)重新回到当前Activity时(UI最顶层)调用
- onStop()调用场景:“the activity is no longer visible”,即当SecondActivity启动且完全挡住MainActivity时调用(或按HOME键到主屏)(MainActivity不在UI最顶层且完全被挡住时)
此时如果退出(点击Back键)SecondActivity(或回到该应用),调用onRestart()。即onRestart()是当MainActivity从onStop()重新回到当前Activity(UI最顶层)时调用
- onDestory()当MainActivity退出时调用(点击Back键)调用finsh()
Activity整个生命周期的完全解读
启动Activity系统会先调用onCreate方法,然后调用onStart方法,最后调用onResume,Activity进入运行状态。
当前Activity被其他Activity覆盖一部分其上或被锁屏系统会调用onPause方法,暂停当前Activity的执行
当前Activity由被覆盖(一部分)状态回到前台或解锁屏系统会调用onResume方法,再次进入运行状态。
当前Activity转到新的Activity界面或按Home键回到主屏,自身退居后台系统会先调用onPause方法,然后调用onStop方法,进入停滞状态
用户后退回到此Activity系统会先调用onRestart方法,然后调用onStart方法,最后调用onResume方法,再次进入运行状态。
当前Activity处于被覆盖状态或者后台不可见状态,当更高优先级的apps需要内存,系统内存不足系统就会杀死当前Activity
而后用户退回当前Activity再次调用onCreate方法、onStart方法、onResume方法,进入运行状态。
用户退出当前Activity系统先调用onPause方法,然后调用onStop方法,最后调用onDestory方法,结束当前Activity。
Fragment的生命周期
先来看张官方说明图
详细解读每个方法的调用场景
- onAttach方法Fragment和Activity建立关联的时候调用(获得activity的传递的值)
- onCreateView方法为Fragment创建视图(加载布局)时调用(给当前的fragment绘制UI布局,可以使用线程更新UI)
- onActivityCreated方法当Activity中的onCreate方法执行完后调用(表示activity执行oncreate方法完成了的时候会调用此方法)
- onDestroyView方法Fragment中的布局被移除时调用(表示fragment销毁相关联的UI布局)
- onDetach方法Fragment和Activity解除关联的时候调用(脱离activity)
fragment生命周期解析
当一个fragment被创建的时候:onAttach()onCreate()onCreateView()onActivityCreated()
当这个fragment对用户可见的时候,它会经历以下状态。onStart()onResume()
1.2可以理解为从创建到显示(或切换)
当这个fragment进入“后台模式”的时候,它会经历以下状态。onPause()onStop()
当这个fragment被销毁了(或者持有它的activity被销毁了):onPause()onStop()onDestroyView()onDestroy()onDetach()
就像Activity一样,在以下的状态中,可以使用Bundle对象保存一个fragment的对象。onCreate()onCreateView()onActivityCreated()
其他场景的调用
屏幕灭掉onPause() onSaveInstanceState() onStop()
屏幕解锁onStart() onResume()
切换到其他FragmentonPause() onStop() onDestroyView()
切换回本身的FragmentonCreateView() onActivityCreated() onStart() onResume()
回到桌面onPause() onSaveInstanceState() onStop()
回到应用onStart() onResume()
退出应用onPause() onStop() onDestroyView() onDestroy() onDetach()
Fragment和Activity的生命周期很相似,以下是对比图
总结
- Activity&Fragment生命周期详解
- Activity&Fragment生命周期详解
- Activity与Fragment的生命周期详解
- [完整版]Activity生命周期、Fragment生命周期
- fragment生命周期与Activity生命周期
- activity和fragment生命周期
- Activity与Fragment生命周期
- Fragment和Activity生命周期
- Activity和Fragment生命周期
- Android Activity Fragment 生命周期
- Fragment与Activity生命周期
- Fragment与Activity生命周期
- Activity、Fragment 生命周期
- Activity和Fragment生命周期
- Activity,Fragment,Service生命周期
- Activity Fragment 生命周期
- Fragment与Activity生命周期
- activity和fragment生命周期
- android省市区三级联动实现
- c语言指针详解
- java.lang.ClassNotFoundException: javax.el.ELManager
- 相亲的意义
- 让你的Node.js应用跑得更快的10个技巧
- Activity&Fragment生命周期详解
- 摘要算法加密tomcat登录密码(加盐,随机盐值)
- ios开发-------- Xcode9新特性
- notepad正则删除关键词所在行
- 欢迎使用CSDN-markdown编辑器
- 百度站点的主动推送
- iOS和Android的app界面设计规范
- redis持久化设置
- 微信小程序 页面值Data 赋值取值 setData