FirstActivity startActivity SecondActivity
E/FirstActivity: onPause
E/SecondActivity: onCreate
E/SecondActivity: onStart
E/SecondActivity: onResume
E/FirstActivity: onStop
FirstActivity startActivity SecondActivity ,然后 finish SecondActivity
E/SecondActivity: onPause
E/FirstActivity: onRestart
E/FirstActivity: onStart
E/FirstActivity: onResume
E/SecondActivity: onStop
E/SecondActivity: onDestroy
按后键退回桌面FirstActivity生命周期
E/FirstActivity: onPause
E/FirstActivity: onStop
从桌面进入FirstActivity
E/FirstActivity: onRestart
E/FirstActivity: onStart
E/FirstActivity: onResume
横竖屏切换,manifest不配置configChanges,FirstActivity生命周期
E/FirstActivity: onPause
E/FirstActivity: onStop
E/FirstActivity: onRetainCustomNonConfigurationInstance:
E/FirstActivity: onDestroy
E/FirstActivity: getLastNonConfigurationInstance:
E/FirstActivity: onCreate
E/FirstActivity: onStart
E/FirstActivity: onResume
这是因为通常情况下软件在横竖屏之间切换,界面的高宽会发生转换,从而可能会要求不同的布局。具体的布局切换可以通过如下两种方法来实现:
1)在res目录下建立layout-land和layout-port目录,相应的layout文件名不变,比如main.xml。layout-land是横屏的layout,layout-port是竖屏的layout,其他的不用管,横竖屏切换时程序自己会调用Activity的onCreate方法,从而根据当前横竖屏情况自动加载响应的布局。
2)假如布局资源是不一样又不按照如上设置,则需要通过java代码来判断当前是横屏还是竖屏然后来加载相应的xml布局文件(比如mainP为竖屏mainL为横屏)。因为当屏幕变为横屏的时候,系统会重新呼叫当前Activity的onCreate方法,你可以把以下方法放在你的onCreate中来检查当前的方向,然后可以让你的setContentView来载入不同的layout xml。
3)切换前对数据进行保存,切换重启后对数据进行恢复,具体操作的步骤如下:
- 重写Activity.onRetainNonConfigurationInstance(),用户横竖屏切换前保存数据
- 在onCreate()函数中调用getLastNonConfigurationInstance(),获取onRetainNonConfigurationInstance()保存的数据
链接:https://www.jianshu.com/p/ffd7e4886b9c
横竖屏切换,配置configChanges=orientation,FirstActivity生命周期
E/FirstActivity: onConfigurationChanged:{1.0 460mcc7mnc [zh_CN_#Hans,en_GB] ldltr sw360dp w640dp h336dp 480dpi nrml long land finger -keyb/v/h -nav/h winConfig={ mBounds=Rect(0, 0 - 1080, 1920) mAppBounds=Rect(0, 0 - 1920, 1080) mWindowingMode=fullscreen mActivityType=standard} nonFullScreen=0 suim:1 s.29}
只调用了onConfigurationChanged 没有再走其他生命周期
注意:dialog弹框activity 的生命周期不受影响
网友评论