Android应用重置方向更改,最好的处理方式?

Ant*_*ver 4 serialization android orientation parcelable

所以我正在制作一个基本的国际象棋应用程序来玩各种各样的Android编程元素,到目前为止我学到了很多,但这次我迷路了.

当模拟器的方向改变时,活动将被重置.根据我的研究,在应用程序暂停/中断的任何时候都会发生同样的事情,即.键盘更换,电话,打回家钥匙等

显然,让国际象棋游戏不断重置是不可行的,所以我再次发现自己需要学习如何解决这个问题.

我的研究提出了一些主要的事情,在我的Activity中覆盖onPaused方法,在我的清单中查找Orientation,键盘更改(通过android:configChanges),使用Parcelables或Serialization.

我使用Pacelables查找了很多示例代码,但说实话它太混乱了.也许明天以新鲜的眼睛回来将是有益的,但是现在我越看Parcelables它的意义就越小.

我的应用程序使用一个Board对象,它有64个Cell对象(8x8 2D数组),每个单元格都有一个Piece Object,可以是实际的一个,如果空格是空的,则为null.假设我使用Parcelable或Serialization,我假设我必须对每个类,Board,Cell和Piece进行Parcelize或Serialize.

首先,Parcelable或Serialization是否正确地考虑这个问题?如果是这样,Parcelable或Serializable是首选吗?我是否正确假设三个对象中的每一个都必须是Parceled/Serialized?最后,是否有人链接到一个简单易懂的Parcelable教程?任何可以帮助我理解的东西,当我的应用程序进一步扩展时,可以阻止进一步的麻烦.

任何帮助,将不胜感激.

Mat*_*att 8

在您的<Activity>标签的清单中,您可以添加android:configChanges ="orientation | keyboardHidden",这将停止重新加载活动,并在更改方向或隐藏键盘时调用onConfigurationChanged().

如果您需要在发生这些事件中的任何一个时进行调整,您可以覆盖活动中的onConfigurationChanged(),如果不是您要做的就是将属性添加到清单中.

就像是:

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    setContentView(R.layout.myLayout);
}
Run Code Online (Sandbox Code Playgroud)

效果很好.