android:configChanges

本文介绍了如何通过配置Activity的configChanges属性来防止在屏幕旋转、键盘可用性改变等事件发生时,Activity被销毁并重新启动,从而避免Activity中记录的信息丢失。详细解释了不同configChanges值的作用及设置方法,并提供了在特定SDK版本下阻止Activity重新加载的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

程序在运行时,当屏幕旋转、键盘可用性改变等事件发生时,activity 会销毁再重新启动。这一过程将会导致 activity 记录的信息被销毁。

为了避免这种情况,可以配置 activity 的 configChanges 属性。当指定属性发生变化时(例如:横竖屏切换),不会重新启动 activity,而是通知程序调用 onConfigurationChanged 方法。


configChanges 的可选值如下:

  • mcc:国际移动用户识别码所属国家代号改变(侦测sim)

  • mnc:国际移动用户识别码的移动网号码改变(侦测sim)

  • locale:本地语言改变

  • touchscreen:触摸屏改变(通常不会发生)

  • keyboard:键盘发生改变,例如:用户使用外部的键盘

  • keyboardHidden:键盘可见性改变,例如:输入时键盘出现,输入后隐藏键盘

  • navigation:导航发生变化(通常不会发生)

  • screenLayout:屏幕布局发生变化

  • fontScale:字体比例发生变化

  • uiMode:用户模式发生变化

  • orientation:屏幕方向改变

  • screenSize:屏幕大小改变

  • smallestScreenSize:屏幕物理大小改变,例如:连接到一个外部的屏幕


设置方法如下:

<activity
        android:name="MainActivity"
        android:configChanges="orientation|keyboardHidden" />

当屏幕方向或键盘可见性发生改变时,调用 onConfigurationChanged 方法:

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
}

Android 3.2(API 13)之后,在设置 activity 的android:configChanges="orientation|keyboardHidden"后,还是一样会重新调用各个生命周期的。因为 screen size 也开始跟着设备的横竖切换而改变。所以,在 AndroidManifest.xml 里设置的 MiniSdkVersion 和 TargetSdkVersion 属性大于等于13的情况下,如果要阻止程序在运行时重新加载 activity,应设置为 android:configChanges="orientation|screenSize"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值