android manifest中activity android:configChanges 横竖屏切换,禁止重建Activity

本文介绍如何在Android应用程序中处理设备配置的变化,如屏幕方向切换、键盘隐藏状态改变等,通过正确配置`android:configChanges`属性,避免不必要的Activity重启,并使用`onConfigurationChanged()`方法来响应这些变化。

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

android:configChanges


Android:configChanges=[mcc,mnc,locale,touchscreen,keyboard,keyboardHidden,navigation,screenLayout,fontScale,uiMode,
     orientation,screenSize,smallestScreenSize]

 程序在运行时,一些设备的配置可能会改变,如:横竖屏的切换、键盘的可用性等,这样的事情一发生,Activity会重新启动,其中的过程是:


其 OnPasuse 、onStop 、onDestroy 方法均被调用。onSaveInstanceState 方法会在onStop之前执行,它和onPause没有特定顺序,可前可后。
在销毁之前会先 called  onSaveInstanceState()去保存你应用中的一些数据,然后called onDestroy(),最后才去called onCreate()或onRestoreInstanceState()方法去重新启动Activity。


当指定的属性后,属性发生变化时,不会去重新启动Activity,而是通知程序去调用 onConfigurationChanged()函数 
例如:在进行横竖屏的切换时,会重新启动Activity,而定义了这个属性,就不会重新启动Activity了,而是去调用 onConfigurationChanged()函数。

可以设置多个属性,中间用|隔开

VALUE                        DESCRIPTION                                                                                                                                                                                      
"mcc"国际移动用户识别码所属国家代号是改变了-----  sim被侦测到了,去更新mcc    mcc是移动用户所属国家代号
"mnc"国际移动用户识别码的移动网号码是改变了------ sim被侦测到了,去更新mnc    MNC是移动网号码,最多由两位数字组成,用于识别移动用户所归属的移动通信网
"locale"地址改变了-----用户选择了一个新的语言会显示出来
"touchscreen"触摸屏是改变了------通常是不会发生的
"keyboard"键盘发生了改变----例如用户用了外部的键盘
"keyboardHidden"键盘的可用性发生了改变
"navigation"导航发生了变化-----通常也不会发生
"screenLayout"屏幕的显示发生了变化------不同的显示被激活
"fontScale"字体比例发生了变化----选择了不同的全局字体
"uiMode"用户的模式发生了变化
"orientation"屏幕方向改变了
"screenSize"屏幕大小改变了
"smallestScreenSize"屏幕的物理大小改变了,如:连接到一个外部的屏幕上






























	public void onConfigurationChanged(Configuration newConfig) {    
        try {    
            super.onConfigurationChanged(newConfig);    
            if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {    
                Log.v("Main", "onConfigurationChanged_ORIENTATION_LANDSCAPE");    
            } else if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {    
                Log.v("Main", "onConfigurationChanged_ORIENTATION_PORTRAIT");    
            }    
        } catch (Exception ex) {    
        }    
    }


横竖屏切换,禁止重建Activity
android:configChanges="orientation|keyboardHidden|screenSize"






评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值