2010-12-06 107 views
4

当我的主要活动在启动屏幕后启动时,它会分析4个大XML文件。这需要几秒钟的时间,我可以在启动画面显示的时间内隐藏它。在Android中的方向更改时活动重新加载

但是,当屏幕方向改变或者当我在子活动后回到主活动时,它会再次解析,从而导致我的应用程序“挂起”几秒钟,并且它没有响应或者该时间内的任何内容。

我明白这是Android中的正常行为,但没有办法避免这种情况?

我看了一些关于savedinstancestate,但我似乎无法理解的文档..

回答

12

如果您的API级别为12或更低,请在每个活动节点的Android清单文件中添加此代码。

android:configChanges="orientation|keyboardHidden" 

对于13级及以后你还必须有“屏幕尺寸”,即:

android:configChanges="orientation|keyboardHidden|screenSize" 

现在在你的每一个活动的Java类粘贴此代码。

@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 

    // Checks the orientation of the screen 
    if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) { 
     Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show(); 
    } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){ 
     Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show(); 
    } 
    // Checks whether a hardware keyboard is available 
    if (newConfig.hardKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_NO) { 
     Toast.makeText(this, "keyboard visible", Toast.LENGTH_SHORT).show(); 
    } else if (newConfig.hardKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_YES) { 
     Toast.makeText(this, "keyboard hidden", Toast.LENGTH_SHORT).show(); 
    } 
} 
+0

非常感谢你!这工作:) – Galip 2010-12-06 12:26:14

3

您可以通过在AndroidManifest文件中添加android:configChanges =“orientation”来避免这种情况。

相关问题