0

一个常见问题是“您如何在配置更改之间维护您的活动状态? ”。

这个问题的答案似乎很大程度上取决于开发人员的偏好。然而,有一件事似乎是确定的——不要android:configChanges="orientation|screenSize"在 Manifest 文件中使用(参见LINK)。

因此,为了确保稳定性,我们应该按照 android 的建议在配置更改期间保留一个对象(参见LINK)。但是,这需要使用onRetainNonConfigurationInstanceAPI 13 中已弃用的内容;相反,它建议我们使用setRetainInstance该类Fragment

鉴于 Android 对 Fragment 的偏好,我们现在是否应该设计我们的 Activity,其中主 UI 本身就是一个 Fragment,并且该 Activity 只是充当“主 Fragment”和任何可能的“Fragment”的“驱动程序”或“Fragment Manager”孩子们可能有吗?

此外,android:configChanges="orientation|screenSize"如果您对横向和纵向视图使用相同的资源,我是否认为清单文件中的设置实际上是可以的?

4

1 回答 1

2

因此,为了确保稳定性,我们应该按照 android 的建议在配置更改期间保留一个对象

那是第二层解决方案。在可能的情况下,只需对实例状态做出贡献Bundle(例如,onSaveInstanceState()在您的活动或片段中)。使用onRetainNonConfigurationInstance()或保留的片段,其中您的实例状态无法存储在Bundle.

我们现在是否应该在主 UI 本身就是一个片段的情况下设计我们的活动,并且该活动只是充当“主片段”及其可能具有的任何“片段子”的“驱动程序”或“片段管理器”?

如果您愿意,当然欢迎您以这种方式设计您的 UI。

我是否认为在清单文件中设置 android:configChanges="orientation|screenSize" 实际上是可以的,前提是您对横向和纵向视图使用相同的资源?

不,只要您的应用程序会因其他所有配置更改(区域设置更改、SIM 卡更改、键盘更改等)而中断。如果您使用android:configChanges,通常您需要以这种方式处理所有配置更改。

于 2013-08-24T14:45:55.733 回答