android基础---AndroidManifest中android:configChanges的作用

发布时间:2014-10-23 23:24:24
来源:分享查询网

当手机横放时, 程序的activity会重启, 以适应新的设备配置. 假如是一个编辑页面,  重启的结果会导致所写内容的丢失, 如果已经写了很多内容, 那将是一件极其蛋疼的事情. 如果不想横屏时activity自动重启, 可以在AndroidManifest文件的<activity>中声明android:configChanges属性, 当指定的系统配置发生改变的时候, 系统将不会重启activity, 而是执行程序中的public void onConfigurationChanged(Configuration newConfig)函数, 这样就可以让我们自己处理横屏这件事. 下面给出一个小例子, 当手机横屏时, 执行onConfigurationChanged, 可以自己实验一下. <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.test" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.example.test.MainActivity" android:configChanges="keyboardHidden|orientation|screenSize" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="com.example.test.Activity2" > </activity> </application> </manifest> 注意, API level 13以上的程序要加上screenSize这个值才能匹配横屏这件事. 否则还是自动重启. package com.example.test; import android.app.Activity; import android.content.res.Configuration; import android.os.Bundle; public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); System.out.println("onCreate"); } @Override public void onConfigurationChanged(Configuration newConfig){ //newConfig就是横屏后的新配置, //newConfig.orientation保存着现在设备的方向. super.onConfigurationChanged(newConfig); System.out.println("changed"); if(newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE){ System.out.println("横向"); }else if(newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){ System.out.println("竖向"); } } }

返回顶部
查看电脑版