Android中的方向更改时,活动会重新加载

当我的主要活动在启动屏幕之后启动时,它会分析4个大的XML文件。 这需要几秒钟,我可以在启动时显示启动画面时隐藏它。

但是当屏幕方向改变或者当我在子活动之后返回主活动时它再次解析,因此我的应用程序“挂起”几秒钟,并且它在那段时间内没有响应或任何响应。

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

我读了一些关于saveinstancestate的内容,但我似乎无法理解这些文档。

如果您的目标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(); } } 

你可以通过在AndroidManifest文件中为你的活动添加android:configChanges =“orientation”来防止这种情况。

Galip在发布任何问题之前,请检查此http://developer.android.com/guide/topics/resources/runtime-changes.html并谷歌。