android:configChanges="keyboardHidden|orientation
一般在AndroidManifest.xml文件中都没有使用到android:configChanges="keyboardHidden|orientation"配置,当然还是很有用的哈
就是如果配置了这个属性,当我们横竖屏切换的时候会直接调用onCreate方法中的onConfigurationChanged方法,而不会重新执行onCreate方法,那当然如果不配置这个属性的话就会重新调用onCreate方法了,下面是测试
AndroidManifest.xml文件
<?xmlversion="1.0"encoding="utf-8"?><manifestxmlns:android="http://schemas.android.com/apk/res/android"package="com.test"android:versionCode="1"android:versionname="1.0">
<uses-sdkandroid:minSdkVersion="8"/>
<applicationandroid:icon="@drawable/icon"android:label="@string/app_name">
<activityandroid:name=".TestActivity"android:label="@string/app_name"android:configChanges="keyboardHidden|orientation"><intent-filter>
<actionandroid:name="android.intent.action.MAIN"/><categoryandroid:name="android.intent.category.LAUNCHER"/></intent-filter>
</activity>
</application></manifest>
main.xml文件
<?xmlversion="1.0"encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent">
<TextViewandroid:id="@+id/tv"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="横竖屏切换测试"/>
<EditTextandroid:layout_width="fill_parent"android:layout_height="wrap_content"
android:id="@+id/et"/>
</LinearLayout>
TestActivity.java文件
packagecom.test;
importandroid.app.Activity;
importandroid.content.res.Configuration;
importandroid.os.Bundle;
importandroid.widget.EditText;
importandroid.widget.TextView;
publicclassTestActivityextendsActivity
{
EditTextet;TextViewtv;
@Override
publicvoidonCreate(BundlesavedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
et=(EditText)findViewById(R.id.et);
tv=(TextView)findViewById(R.id.tv);
System.out.println("我是onCreate方法");
}
@Override
publicvoidonConfigurationChanged(ConfigurationnewConfig)
{
super.onConfigurationChanged(newConfig);
if(
newConfig.orientation==Configuration.ORIENTATION_LANDSCAPE){
tv.setText("横屏");
}
else{
tv.setText("竖屏");
}
}}
可以亲测一下,以验证我刚才说的结论“当在xml文件中配置了android:configChanges="keyboardHidden|orientation"属性,在横紧屏切换的时候不会重新执行Activity的onCreate方法,只是执行onConfigurationChanged方法,否则切换的时候会重新执行onCreate方法”