最近在回顾玉刚的《Android开发艺术探索》的时候稍微扩展了一下, 如果Activity生命周期结合launchMode后, Activity之间跳转时, Activity的生命周期会发生什么新的变化呢? 基于此想法有了这篇博客的总结. 各位同仁如果在看的过程中发现任何问题, 欢迎留言反馈, 我会及时甄误, 谢谢。
一、launchMode= standard:
1.ActivityA 跳转到ActivityB, 他们的生命周期如下:
Activty(A) -- onPause
Activty(B) -- onCreate
Activty(B) -- onStart
Activty(B) -- onPostCreate
Activty(B) -- onResume:
Activty(B) -- onPostResume
Activty(A) -- onSaveInstanceState
Activty(A) -- onStop
特别注意:
(1)如果新开启的Activity(B)为Dialog主题时, Activity(A)不执行onStop方法;
如果在ActivityB按Home键退到后台, 它们的生命周期如下:
Activty(B) -- onPause
Activty(A) -- onStop
Activty(B) -- onSaveInstanceState
Activty(B) -- onStop
(2)如果开启的Activity(B)为Dialog主题, Activity(A)的onStop不执行, 继续打开新的ActivityC, 它们的生命周期如下:
Activty(B) -- onPause:
Activty(A) -- onStop:
Activty(C) -- onCreate
Activty(C) -- onStart
Activty(C) -- onPostCreate
Activty(C) -- onResume:
Activty(C) -- onPostResume
Activty(B) -- onSaveInstanceState
Activty(B) -- onStop
这时在ActivityC按Back返回, 它们之间的生命周期如下:
Activty(C) -- onPause
Activty(A) -- onRestart
Activty(A) -- onStart
Activty(B) -- onRestart
Activty(B) -- onStart
Activty(B) -- onResume
Activty(B) -- onPostResume
Activty(C) -- onStop
Activty(C) -- onDestroy
2. 这时在ActivityB按Back键正常返回, 它们之间的生命周期如下:
Activity(B) -- onPause:
Activty(A) -- onRestart:
Activty(A) -- onStart:
Activty(A) -- onResume:
Activty(A) -- onPostResume:
Activty(B) -- onStop
Activty(B) -- onDestroy