2011-12-15 95 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); 

配置标记的值在被记录