是否应将所有活动建模为片段?

时间:2013-08-24 14:33:43

标签: android configuration android-fragments

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

这个问题的答案似乎在很大程度上取决于开发者的偏好。但是,有一件事看起来确定 - 不要在清单文件中使用android:configChanges="orientation|screenSize"(请参阅LINK)。

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

考虑到Android对片段的这种偏好,我们现在应该设计我们的活动,其中主UI本身就是一个片段,而活动只是作为“主片段”的任何“驱动程序”或“片段管理器”。可能有'片段儿童'吗?

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

1 个答案:

答案 0 :(得分:2)

  

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

所示

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

  

我们现在应该设计我们的活动,其中主UI本身就是一个片段,活动只是作为“主要片段”的“驱动程序”或“片段管理器”以及它可能具有的任何可能的“片段子” ?

如果您愿意,我们非常欢迎您以这种方式设计您的用户界面。

  

我是否认为在清单文件中设置android:configChanges =“orientation | screenSize”实际上是正常的,只要您为横向和纵向视图使用相同的资源?

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