Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android的onConfigurationChanged

Android的onConfigurationChanged

編輯:關於Android編程

在Android開發中,如果某些事件觸發(例如:旋屏事件),則Activity會重新調用onCreate方法,對Activity重新初始化,這樣不僅效率低,而且會造成數據丟失,解決辦法是重寫onConfigurationChanged方法,並在AndroidManifest.xml中對Activity聲明configChanges,這樣特定事件觸發就會調用onConfigurationChanged方法,而不是onCreate方法重新初始化。


通常在AndroidManifest.xml中指定Activity添加以下代碼:

android:configChanges="orientation|keyboard|keyboardHidden"
這句代碼表示,當設備旋轉、顯示鍵盤、隱藏鍵盤時調用Activity的onConfigurationChanged方法,如果這句話不聲明,特定事件觸發的時候則會調用onCreate方法。


下面是一個Demo,測試旋屏的時候數據的變化,用data模擬數據。

public class MainActivity extends Activity {

	private static final String TAG = "TEST";
			
	private int data;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		Log.i(TAG, "onCreate");
		
	}

	@Override
	protected void onStart() {
		// TODO Auto-generated method stub
		super.onStart();
		data = (int) (Math.random() * 100);
		Log.i(TAG, "onStart : " + data);
	}
	
	@Override
	public void onConfigurationChanged(Configuration newConfig) {
		// TODO Auto-generated method stub
		super.onConfigurationChanged(newConfig);
		Log.i(TAG, "onConfigurationChanged : " + data);
	}

}


旋屏三次效果:


可見旋屏三次都沒有進入onCreate方法,數據得以保留。

另外需要注意的是onConfigurationChanged()方法中的:super.onConfigurationChanged(newConfig);一定不能省去,否則將引發:android.app.SuperNotCalledException 異常。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved