码迷,mamicode.com
首页 > 其他好文 > 详细

横竖屏切换

时间:2016-04-21 07:26:18      阅读:145      评论:0      收藏:0      [点我收藏+]

标签:

 

很多时候会用到屏幕旋转时需要对一些数据进行保存,例如当横竖屏区切换时要保存先前屏幕的一些数据和状态,个人认为有两个方法提供使用:

1.当前的Activity不销毁:

那么就需要在AndroidManifest.xml配置文件中的Activity标签下面添加:android:configChanges="orientation|keyboardHidden"

然后在activity中重写onConfigurationChanged()方法,每次旋转时会调用该方法,可以再该方法中处理数据

生命周期如下:

技术分享

从上图可以看出,无论你怎么旋转都不会销毁当前的Activity,只会执行onConfigurationChanged()方法,因此只要在该方法中处理响应的数据即可

 

2.销毁当前的Activity:

如果销毁当前的Activity,那么就要重写Activity的两个方法onSaveInstanceState()和 onRestoreInstanceState(),显然从方法名字可以看出一个是保存

数据,一个是还原数据,生命周期如下:

技术分享

显然,当屏幕旋转时在什么时候保存数据和什么时候还原数据一目了然了

 

自从Android 3.2(API 13),screen size也开始跟着设备的横竖切换而改变。
所以,在AndroidManifest.xml里设置的MiniSdkVersion和 TargetSdkVersion属性大于等于13的情况下,
如果你想阻止程序在运行时重新加载Activity,除了设置"orientation",你还必须设置"ScreenSize"。
解决方法:
AndroidManifest.xml中设置android:configChanges="orientation|screenSize"  

----> 只会调用onConfigurationChanged方法。onSaveInstanceState和onRestoreInstanceState方法不执行。

onConfigurationChanged的作用:源码翻译

如果改变的配置中包含了你所无法处理的配置(在android:configChanges并未声明),
你的activity仍然要被重新启动,而onConfigurationChanged(Resources.Configuration)将不会被调用。

http://www.cnblogs.com/lijunamneg/archive/2013/03/26/2982461.html

结论:为了防止数据丢失,需要在onSaveInstanceState和onRestoreInstanceState方法保存数据。

参考:

http://www.cnblogs.com/andriod-html5/archive/2012/06/06/2539375.html

横竖屏切换

标签:

原文地址:http://www.cnblogs.com/H-BolinBlog/p/5415414.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!