Activity、Fragment想必大家都不陌生了,直接上图吧。
-
Fragment生命周期
- Activity、Fragment生命周期两者对比
- OnCreate()
第一次创建的时候调用。一般用来做一些出数据的操作。比如,加载布局,初始化事件。。
- OnStart()
在不可见准备变为可见的时候调用。
- OnResume()
可见,并且有焦点交互的时候,这个时候,这个activity一定在返回栈的栈顶。并且处于运行状态。
- OnPause()
系统准备去启动||恢复另外一个activity的时候调用,
- OnStop()
在activity完全不可见的时候调用,
一般在这里都会把一些在当前这个activity的耗损资源的一些操作释放了,和保存一些关键的数据。这个方法一定要快,不能超过10秒,否者系统就会报ARN了。
和上面的区别在,如果打开新的活动是一个dialog,那么OnPause会执行,onStop不会执行。
- OnDestroy()finish的时候调用
销毁之前调用,之后这个activity的状态就是销毁状态了。
- OnRestart()
由停止状态变为运行状态之前调用,就是重启的时候调用,
- OnSaveInstanceState()
只有在activity即将销毁的时候,并且有机会重新显示的时候才会调用,正常生命周期不会调用。
- fragments的大部分状态都和activitie很相似,但fragment有一些新的状态。
onAttached() —— 当fragment被加入到activity时调用(在这个方法中可以获得所在的activity)。
onCreateView() —— 当activity要得到fragment的layout时,调用此方法,fragment在其中创建自己的layout(界面)。 onActivityCreated() —— 当activity的onCreated()方法返回后调用此方法
onDestroyView() —— 当fragment中的视图被移除的时候,调用这个方法。
onDetach() —— 当fragment和activity分离的时候,调用这个方法。
- Home键回到主界面时又返回时
依次执行:onPause——onSaveInstanceState——onStop——返回——onRestart——onStart——onResume
Fragment一样依次执行,在activity之后,无此方法则不执行
- 正常销毁时
activity:onPause——onStop——onDestroy
fragment:onPause——onStop——onDestroyView——onDestroy——onDetach
- 在后台被意外销毁又从最近活动重新回到界面时
activity:onCreate——onStart——onRestoreInstanceState——onResume
fragment:onAttach——onCreate——onCreateView——onActivityCreated——onStart——onResume
- 横竖屏切换时
切横竖屏(无config配置)
Activity:onPause——onSaveInstanceState——onStop——onDestroy——onCreate——onStart——onRestoreInstanceState——onResume
Fragment:onPause——onSaveInstanceState——onStop——onDestroyView——onDestroy——onDetach——onAttach——
onCreate——onCreateView——onActivityCreated——onStart——onResume——onResume
横竖屏切换,无配置时,生命周期执行都是一至的,先销毁在创建。
只要熟透两者的生命周期走向,面试官问什么问题都能回答了。