Activity、Fragment生命周期、常用面试问题

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

横竖屏切换,无配置时,生命周期执行都是一至的,先销毁在创建。

 

只要熟透两者的生命周期走向,面试官问什么问题都能回答了。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章