指定设备配置改变时,不重新启动Activity

AndroidManifest.xml中android:configChanges的简介
 程序在运行时,一些设备的配置可能会改变,如:横竖屏的切换、键盘的可用性等,这样的事情一发生,Activity会重新启动。过程:在销毁前先调用onSaveInstanceState()保存应用中一些数据,然后调用onDestroy(),最后才调用onCreate()或onRestoreInstanceState()方法重新启动Activity。
 用android:configChanges去指定属性,当被指定的属性发生变化时,不会去重新启动Activity,而是通知程序去调用 onConfigurationChanged()函数。例如:在进行横竖屏的切换时,会重新启动Activity,而定义了这个属性,就不会重新启动Activity了,而是去调用 onConfigurationChanged()函数。
设置方法:将下列字段用"|"符号分隔开,例如:"locale|navigation|orientation"
Value    Description
"mcc"    The IMSI mobile country code (MCC) has changed — that is, a SIM hasbeen detected and updated the MCC.移动国家号码,由三位数字组成,每个国家都有自己独立的MCC,可以识别手机用户所属国家。
"mnc"    The IMSI mobile network code (MNC) has changed — that is, a SIM hasbeen detected and updated the MNC.移动网号,在一个国家或者地区中,用于区分手机用户的服务商。
"locale"   The locale has changed — for example, the user has selected a new language that text should be displayed in.用户所在地区发生变化。
"touchscreen"  The touchscreen has changed. (This should never normally happen.)
"keyboard"   The keyboard type has changed — for example, the user has plugged in an external keyboard.键盘模式发生变化,例如:用户接入外部键盘输入。
"keyboardHidden" The keyboard accessibility has changed — for example, the user has slid the keyboard out to expose it.用户打开手机硬件键盘
"navigation"  The navigation type has changed. (This should never normally happen.)
"orientation"  The screen orientation has changed — that is, the user has rotated the device.设备旋转,横向显示和竖向显示模式切换。
"fontScale"   The font scaling factor has changed — that is, the user has selected a new global font size.全局字体大小缩放发生改变
"uiMode"    用户的模式发生了变化
"screenLayout"   屏幕的显示发生了变化------不同的显示被激活
"screenSize"   屏幕大小改变了
"smallestScreenSize"屏幕的物理大小改变了,如:连接到一个外部的屏幕上

实例:
 AndroidManifest.xml文件
  ...

<application android:icon="@drawable/icon" android:label="@string/app_name">
    <activity android:name=".TestActivity"
	android:label="@string/app_name"
       android:configChanges="keyboardHidden|orientation">
       <intent-filter>
           <action android:name="android.intent.action.MAIN" />
           <category android:name="android.intent.category.LAUNCHER" />
       </intent-filter>
   </activity>
...


 TestActivity.java文件
  

package com.test;

import android.app.Activity;
import android.content.res.Configuration;
import android.os.Bundle;
	 
    public class TestActivity extends Activity {
        @Override
	public void onCreate(Bundle savedInstanceState) {
	    super.onCreate(savedInstanceState);
	   setContentView(R.layout.main);
	}
	@Override
	public void onConfigurationChanged(Configuration newConfig) {
	    super.onConfigurationChanged(newConfig);
	       if(newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE){
	           // 横屏
	       }else{
	           // 竖屏
	       }
	}
    }


 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值