2011-12-15 94 views
0

我的應用程序有android:configChanges="keyboardHidden|orientation「清單文件設置,當我轉動我的設備,似乎onConfigurationChanged()被調用兩次。Android:爲什麼兩個onConfigurationChanged()事件在旋轉時發生,佈局的大小是什麼時候發生的?

我把登錄我onConfigurationChanged(報表)和的抽獎()我的佈局的主視圖根據這些日誌的輸出,看起來onConfugrationChanged()被調用兩次,並且我的佈局在第二次調用之前不調整大小。

是否有這樣的原因並且是安全的假設所有設備上都會發生這種行爲?

@Override 
public void draw (Canvas canvas) 
{ 
     Log.e("view", getWidth() + " " + getHeight()); 

@Override 
public void onConfigurationChanged(Configuration newConfig) 
{ 
     Log.e("rotated", "rotated"); 


12-15 16:27:36.605: ERROR/view(32510): 1280 700 
12-15 16:27:36.630: ERROR/view(32510): 1280 700 
12-15 16:27:37.000: ERROR/view(32510): 1280 700 
12-15 16:28:29.215: ERROR/rotated(32510): rotated 
12-15 16:28:29.220: ERROR/view(32510): 1280 700 
12-15 16:28:29.330: ERROR/rotated(32510): rotated 
12-15 16:28:29.380: ERROR/view(32510): 800 1180 
12-15 16:28:29.425: ERROR/view(32510): 800 1180 
12-15 16:28:29.525: ERROR/view(32510): 800 1180 
12-15 16:28:29.810: ERROR/view(32510): 800 1180 
+0

你在模擬器中測試嗎?這有一個已知的錯誤。 – dmon 2011-12-15 21:53:43

+0

不,這是在一個設備上。 – ab11 2011-12-16 15:28:47

回答

0

嘗試在onConfiguration()方法,下面的代碼,以確定哪些是在單獨調用到onConfiguration()方法中發生的事情:

http://developer.android.com/reference/android/content/res/Configuration.html

Configuration c = getResources().getConfiguration(); 
    Log.i("view", "Orientation = " + c.orientation + ", Keyboard Config = " + c.keyboardHidden + ", Hardware Keyboard Config = " + c.hardKeyboardHidden); 

配置標記的值在被記錄