说起Activity的一些生命周期回调方法,面试官最喜欢问有哪些,只要是接触过Android的,几乎没有人能回答错误:
onCreate
onStart
onResume
onPause
onStop
onDestory
似乎问来问去,无非会问:
- 打开一个Activity后会生命周期回调序列?
- 按下返回键后该Activity的生命周期回调?
- Activity在前台时接到一个电话,该Activity的调用序列?
- 挂断电话后回到该Activity,序列是?
我似乎以为掌握了这些就足够应许日常生活了,直到有一点我被一位国外的工程师问到这样的问题:
启动Activity A后再启动Activity B,然后按下返回键,这两个Activity的生命周期回调序列是什么?
对于一个有着一年Android经验的人,应该不难回答从Activity A到Activity B再回到Activity A各自的回调顺序:
一、打开Activity A
A.onCreate->A.onStart->A.onResume
二、再打开Activity B时
- Activity B经历的生命周期回调序列:
B.onCreate->B.onStart->B.onResume
- Activity A经历的生命周期回调序列:
A.onPause->A.onStop
好了那么问题来了,A和B彼此之间是如何穿插的呢?可能性有:
A.onPause->A.onStop->B.onCreate->B.onStart->B.onResume
B.onCreate->B.onStart->B.onResume->A.onPause->A.onStop
A.onPause->B...
在概率上有很多中可能,但是事实上两者的回调序列是确定的:
A.onPause->B.onCreate->B.onStart->B.onResume->A.onStop