横竖屏切换 android 会销毁当前的acitivity 生成一个新的activity
让手机只支持横屏 或竖屏
android:screenOrientation="portrait"
<activity android:name=".MainActivity"
android:screenOrientation="portrait"
>
<intent-filter>
android:screenOrientation="portrait"
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
自己处理变更
android:configChanges="orientation"
<activity android:name=".MainActivity"
android:configChanges="orientation|screenSize|keyboardHidden"
>
<intent-filter>
android:screenOrientation="portrait"
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
onConfigurationChanged() 可以检测到横竖屏,外设,网络,键盘,语音等变化
activity 让系统处理配置变更
onSaveInstanceState
onCreate
onRestoreInstanceState
当按Home键,旋转屏幕,接听电话时都要保存状态,都会调用onSaveInstanceState方法
保存状态
1 添加Id
2 onSaveInstanceState()
里面的 super.onSaveInstanceState()
在onSaveInstanceState 中保存状态
在onCreate 中的saveInstanceState 中获取到状态
保持Fragment 对象
1 扩展Fragment
2 在onCreate 函数里调用 setRetainlnstance(true);
3 将 fragment 对象添加到 Activity 中
4 当Acitivty重启时,通过FragmentManager获取此 fragment对象
fm=getSupportFragmentManager();
fragment = fm.findFragmentByTag("ScoreFragment");
if(fragment==null){
fragment = new ScoreFragment();
}
fm = getSupportFragmentManager();
fm.beginTransaction().replace(android.R.id.content,fragment,"ScoreFragment").commit();
Log.d(TAG, "onCreate: ");