Android面试题之Activity和Fragment生命周期 一次性记忆
每当我们换工作面试之前,总是会不由自主的刷起面试题,大部分题我们反反复复不知道刷了多少遍,但是今天记住了,等下一次面试的时候又刷着相同的面试题,我就想问在座的各位,Activity的生命周期,你们到底刷过多少遍 [哭笑] 作为一名程序员 把时间浪费在重复性劳动上是极其不能忍受的 因此 为了让自己省去不必要的脑力开销 我给自己总结了一份面试相关的记忆技巧,在这里分享给大家 记忆不是目的 把知识变成自己的才最关键
前提
需要熟悉Activity的生命周期 通过Activity的周期去对比理解和记忆Fragment生命周期
Activity的生命周期
假设你已经非常熟悉Activity的生命周期了,那么接下来咱们看Fragment的生命周期图
Fragment的生命周期
找出他和Activity的相同之处
这部分完全和Activity一模一样 可以不用记忆它,咱们来看不同的地方
其实这部分才是人们最容易搞混和记不住的地方 那咱们来分析一下:
Fragment比Activity多了几个生命周期的回调方法
onAttach(Activity) 当Fragment与Activity发生关联的时候调用
onCreateView(LayoutInflater, ViewGroup, Bundle) 创建该F
onActivityCreated(Bundle) 当Activity的onCreated方法返回时调用
onDestroyView() 与onCreateView方法相对应,当该Fragment的视图被移除时调用
onDetach() 与onAttach方法相对应,当Fragment与Activity取消关联时调用 PS:注意:除了onCreateView,其他的所有方法如果你重写了,必须调用父类对于该方法的实现
这些方法理解起来并不费劲 但是要完美记在脑子里 还是需要花上一番功夫的
那咱们一个一个来 先从创建开始:
1.首先 onAttach方法: 和Activity进行关联的时候调用 这个放在第一个 应该好理解
2.我们知道 Activity在onCreate方法中需要调用setContentVIew()进行布局的加载,那么在Fragment中onCreateView就相当于Activity中的setContentVIew
3.onActivityCreate是一个额外的方法 为了告诉Fragment当前Activity的创建执行情况 方便Fragment的后续操作
先后顺序
已知Fragment是依赖Activity而存在的 它们都有着相同的生命周期方法 那么先调用Activity的还是Fragment的呢? 这里分两种情况
如果是创建 那么先创建Activity 后创建Fragment
如果是销毁 那么先销毁Fragment 后销毁Activity
网上有很多文章说Activity的onCreate方法在Fragment的onCreateView之后执行,这是不正确的 Fragment一般都是在Activity的onCreate()中创建 要么通过布局加载的方式 要么通过new创建Fragment对象的方式 如果没有Activity的onCreate 哪来的Fragment
总结
上面的理解好后,咱们再整理记忆一下
一句话 Activity是老子 Fragment是小子 进门先让老子进 滚蛋先让小子滚 加载布局createView 老子完事吱一声(ActivityCreated)
希望有帮到你