Activity横竖屏切换和数据存储

一、Activity横竖屏切换

对于横竖屏切换,我们一般是在AndroidManifest.xml中对Activity的属性进行配置。

1)我们不希望屏幕旋转时重建,则需要对configChange属性做如下设置:
android:configChanges="orientation"
2)系统配置发生改变的时候Activity都会被重建,则需要对以下属性做如下设置:

用户插入外接键盘,运营商改变,界面模式(例如开启夜间模式)等都会导致Activity重建

locale:设备的本地位置发生了改变,例如切换了系统语言;
keyboard:键盘类型发生了改变,例如插入了外接键盘;
keyboardHidden:键盘的可访问性发生了改变,例如移除了外接键盘;

所以,最终固定竖屏的代码如下:

android:configChanges="keyboard|keyboardHidden|orientation"

另外,screenOrientation属性也可固定屏幕方向,需要做如下设置:

//android:screenOrientation="landscape"//限制此页面横屏显示
android:screenOrientation="portrait"//限制此页面竖屏显示

二、Activity的数据存储

数据存储方式有很多种,这里我们只说在Activity的生命周期中需要调用到的onSaveInstanceState和onRestoreInstanceState

当横竖屏切换时,Activity会被销毁重建,onPause,onStop,onDestory方法均会被调用,而onSaveInstanceState方法对Activity的状态进行保存,该方法在onStop之前调用,然后,当Activity被创建后,系统会调用onRestoreInstanceState,将之前onSaveInstanceState保存的数据Bundle传递给onRestoreInstanceState和onCreate方法
代码如下:
 @Override
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState, outPersistentState);
        outState.putString("editText",myEdit.getText().toString());
    }

    @Override
    public void onRestoreInstanceState(Bundle savedInstanceState) {
        super.onRestoreInstanceState(savedInstanceState, persistentState);
        String str = savedInstanceState.getString("editText");
        myEdit.setText(str);
    }
在onSaveInstanceState中保存需要存储的参数,然后再onRestoreInstanceState获取保存的数据并进行设置即可。

当横竖屏切换时,我们在onCreate(Bundle savedInstanceState)方法中判断Bundle 是否为Null,当Bundle不为null时对数据进行恢复(该调接口的调接口,该调方法的调方法,该初始化的初始化)。

protected void onCreate(Bundle saveInstanceState){
    if(savedInstanceState!=null){//Bundle 中的参数是onRestoreInstanceState中接收到的值
        String str =saveInstanceState.getString("editText");
    }
}

此篇,我们讲述Activity中的横竖屏切换中的数据存储,如有不妥之处,欢迎留言!!!

这里写图片描述

猜你喜欢

转载自blog.csdn.net/dota_wy/article/details/79332005