资料
5 道刁钻的 Activity 生命周期面试题 Android 横竖屏切换
横竖屏切换
从Android3.2(API级别13)开始
- 不设置Activity的android:configChanges,或设置Activity的android:configChanges=“orientation”,或设置Activity的android:configChanges=“orientation|keyboardHidden”,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏的时候会调用一次.
- 配置android:configChanges=“orientation|keyboardHidden|screenSize”,才不会销毁activity,且只调用onConfigurationChanged的方法.
竖屏:
启动:onCreate->onStart->onResume
切换竖屏:
onPause->onSaveInstanceState->onStop->onDestroy
onCreate->onStart->onSaveInstanceState->onResume
如果配置这个属性:android:configChanges=“orientation|keyboardHidden|screenSize”
就不会在调用Activity的生命周期,只会调用onConfigurationChanged方法
HOME键的执行顺序
onPause->onStop->onRestart->onStart->onResume
BACK键的顺序
onPause->onStop->onDestroy->onCreate->onStart->onResume
锁屏
锁屏时只会调用onPause(),而不会调用onStop方法,开屏后则调用onResume().
弹出Dialog
直接是通过WindowManager.addView显示的(没有经过AMS),所以不会对生命周期影响
启动theme位DialogActivity,跳转透明Activity
A.onPause->B.onCreate->B.onStart->B.onResume
(Activity不会回调onStop,因为只有在Activity切到后台不可见才会回调onStop)