Android UI onConfigurationChanged使用

34 篇文章 0 订阅
Android UI onConfigurationChanged使用

知识点:屏幕旋转 android:configChanges

如何保证在屏幕横竖屏旋转时,不重新执行onCreate等逻辑,直接保存数据恢复显示在页面

要声明由 Activity 处理配置变更,请在清单文件中编辑相应的<activity> 元素,以包含 android:configChanges属性以及代表要处理的配置的值。android:configChanges属性的文档中列出了该属性的可能值(最常用的值包括 "orientation""keyboardHidden",分别用于避免因屏幕方向可用键盘改变而导致重启)。您可以在该属性中声明多个配置值,方法是用管道 | 字符分隔这些配置值

注意:从 Android 3.2(API 级别 13)开始,当设备在纵向和横向之间切换时,“屏幕尺寸”也会发生变化。因此,在开发针对 API 级别 13 或更高版本(正如 minSdkVersion 和 targetSdkVersion 属性中所声明)的应用时,若要避免由于设备方向改变而导致运行时重启,则除了 “orientation” 值以外,您还必须添加 "screenSize"值。 也就是说,您必须声明android:configChanges="orientation|screenSize"。但是,如果您的应用面向 API 级别 12 或更低版本,则 Activity 始终会自行处理此配置变更(即便是在 Android 3.2 或更高版本的设备上运行,此配置变更也不会重启 Activity)。

贴2段代码大家自己去验证下

public class ConfigAct extends Activity {

    public static final String TAG = "ConfigAct";
    
    private String str = "0";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.config_act);
        // 模拟数据初始化
        str = "1";
        Log.e(TAG, "onCreate:" + str);
    }

    @Override
    protected void onStart() {
        super.onStart();
        // 模拟显示之后,数据发生改变
        str = (new Date()).getTime() + "";
        Log.e(TAG, "onStart:" + str);
    }

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        Log.e(TAG, "onConfigurationChanged:" + str);
    }
}
<activity android:name=".config.ConfigAct"  android:configChanges="orientation|screenSize"/>

参考
  1. https://developer.android.com/guide/topics/resources/runtime-changes
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值