android橫豎屏切換,activity生命週期方法是否會回撥
阿新 • • 發佈:2019-01-02
預設情況下的一個應用,沒有在androidmainfest檔案進行任何設定一切都是預設的情況下,我們當改變了他的orientation時候是會銷燬當前activity,新建一個新的activity
public void orien(View view) {
Configuration configuration = getResources().getConfiguration();
// 當前是橫屏
if (configuration.orientation == Configuration.ORIENTATION_LANDSCAPE) {
Log.i (TAG, "設為豎屏");
MainActivity.this
.setRequestedOrientation(Configuration.ORIENTATION_PORTRAIT);
} else if (configuration.orientation == Configuration.ORIENTATION_PORTRAIT) {
Log.i(TAG, "設為橫屏");
MainActivity.this
.setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
}
在按下按鈕後,改變系統方向屬性從生命週期函式執行順序可以知道是先銷燬了activity然後在新建了一個新的activity
現在這種狀況下希望後來的activity能獲取到原來activity資訊必須實現下面兩個方法
@Override
protected void onSaveInstanceState(Bundle outBundle) {
super.onSaveInstanceState(outBundle);
outBundle.putBoolean("RoadChange" , mChange);
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
mChange = savedInstanceState.getBoolean("RoadChange");
}
不想用上面方法就用下面方法
對activity設定這個屬性android:configChanges=”keyboardHidden|orientation|screenSize” 這句話意思就是配置雙引號裡面引數意義,軟鍵盤隱藏,方向,螢幕大小改變時候回撥onConfigurationChanged方法。
現在當單擊按鈕觸發系統方向屬性改變時候不會重新繪製activity,所以那些生命週期回撥方法也不會呼叫了。只是會回撥onConfigurationChanged方法。