背景:之前有过两篇写activity的博客
android之activity的生命周期详解:详细介绍了activity的整个生命周期、各状态间的转换和返回桌面时保存activity的状态
本篇博客会牵扯到里面的内容,如果你都有所了解可以直接往下看,如果不了解可以进去回忆下。
问题:在做应用的退出对话框时,发现如果对话框弹出,然后把手机横竖屏切换一下,对话框就消失了。知道activity在横竖屏切换时会走一些生命周期,就误以为是在onPause和onResume的时候没有把对话框恢复出来,
首先想到就是设一个全局变量isDialogShow用来保存对话框是否显示,在onPause中检查下如果显示了,就把isDialogShow设置为true,然后在onResume中判断下isDialogShow的值,如果为true,则把对话框在显示出来。
以为这样就解决了,运行发现不对,对话框还是不显示。
然后debug发现,每次进入onResume的时候,isDialogShow都是false,也就是说每次isDialogShow都被重新初始化了。
这时候才突然意识到,横竖屏切换的时候生命周期可能不是我想的那样。
就借着这个机会去总结一下activity横竖屏切换时如何保存状态以及自适应布局。
解决方案:对于这个问题,有三种方案
1??顺应activity的生命周期,保存然后恢复状态,onCreate中动态适应布局。
2??在AndroidManifest.xml中设置,不让activity重走生命周期从而保存状态,然后通过onConfigurat