在Android中,当屏幕方向改变时,活动会重新加载

4
当我的主活动在启动画面后启动时,它会解析4个大型XML文件。这需要几秒钟的时间,我能够在启动时通过启动画面来隐藏此过程。 但是当屏幕方向改变或从子活动返回到主活动时,它会再次解析,因此我的应用程序会“挂起”几秒钟,并且在此期间不会响应任何操作。 我了解这在Android中是正常行为,但难道没有办法避免这种情况吗? 我读到了一些关于savedinstancestate的内容,但似乎无法理解文档。
2个回答

12

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

android:configChanges="orientation|keyboardHidden"

对于13级及以上的屏幕,您还需要包括“screensize”,即:

    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();
    }
}

3
您可以通过在AndroidManifest文件中的活动中添加android:configChanges="orientation"来防止这种情况发生。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,