Android 应用程序在方向更改时重置,最佳处理方式?

标签 android serialization orientation parcelable

所以我正在制作一个基本的国际象棋应用程序来玩转 android 编程的一些不同元素,到目前为止我学到了很多东西,但这次我迷路了。

当模拟器的方向改变时, Activity 被重置。根据我的研究,只要应用程序暂停/中断,同样的事情就会发生,即。换键盘、打电话、敲home键等

显然,不断重置棋局是不可行的,所以我再次发现自己需要学习如何解决这个问题。

我的研究提出了几个主要问题,覆盖我的 Activity 中的 onPaused 方法、监听方向、 list 中的键盘更改(通过 android:configChanges)、使用 Parcelables 或序列化。

我查了很多使用Pacelables的示例代码,但是老实说太乱了。也许明天以全新的眼光回来会有所帮助,但现在我对 Parcelables 的了解越多,它就越没有意义。

我的应用程序使用了一个 Board 对象,它有 64 个 Cell 对象(在一个 8x8 二维数组中),每个单元格都有一个 Piece 对象,如果空间为空,则为实际的 piece 或 null。假设我使用 Parcelable 或 Serialization,我假设我必须对每个类、Board、Cell 和 Piece 进行 Parcelize 或序列化。

首先,Parcelable 或 Serialization 是否适合解决此问题?如果是这样,那么首选 Parcelable 或 Serializable 吗?我是否正确地假设这三个对象中的每一个都必须被打包/序列化?最后,有人有指向简单易懂的 Parcelable 教程的链接吗?任何可以帮助我理解并在我的应用程序进一步扩展时停止进一步头痛的东西。

如有任何帮助,我们将不胜感激。

最佳答案

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

如果您需要在这些事件发生时进行调整,您可以在您的 Activity 中覆盖 onConfigurationChanged(),如果您不需要做的只是将属性添加到 list 中。

类似于:

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    setContentView(R.layout.myLayout);
}

运行良好。

关于Android 应用程序在方向更改时重置,最佳处理方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2774645/

相关文章:

c# - 如何序列化运行时将 "properties"添加到 Json

xamarin.forms - 在 Xamarin Forms 中控制单页方向和 View 旋转

.net - 如何在 .NET 中翻转/旋转 PrintDocument?

android - 应用程序在 android 中显示图像很慢

安卓 : Adding Notes to Existing Contacts

java - 在项目上单击字符串数组

wcf - 如何使用 Json.Net 从 WCF Rest 服务 (.NET 4) 返回 json,而不是用引号引起来的字符串?

c# - 将 C# 对象数组序列化为字符串的最快方法

java - 如何检测Android手机的方向从水平位置到垂直位置的变化?

android - Twilio Android SDK 中的视频通话录音