一个常见问题是“如何在配置更改之间维护您的活动状态?”。
这个问题的答案似乎在很大程度上取决于开发者的偏好。但是,有一件事看起来确定 - 不要在清单文件中使用android:configChanges="orientation|screenSize"
(请参阅LINK)。
因此,为了确保稳定性,我们应该在配置更改期间保留一个对象,如android所示(参见LINK)。但是,这需要使用API 13中已弃用的onRetainNonConfigurationInstance
;相反,它建议我们使用setRetainInstance
类的Fragment
。
考虑到Android对片段的这种偏好,我们现在应该设计我们的活动,其中主UI本身就是一个片段,而活动只是作为“主片段”的任何“驱动程序”或“片段管理器”。可能有'片段儿童'吗?
此外,我是否认为在清单文件中设置android:configChanges="orientation|screenSize"
实际上是正常的,只要您为横向和纵向视图使用相同的资源?
答案 0 :(得分:2)
因此,为了确保稳定性,我们应该在配置更改期间保留一个对象,如android
所示
这是第二层解决方案。在可能的情况下,只需贡献实例状态Bundle
(例如,您的活动或片段中的onSaveInstanceState()
)。使用onRetainNonConfigurationInstance()
或保留的片段,其中您具有无法存储在Bundle
中的实例状态。
我们现在应该设计我们的活动,其中主UI本身就是一个片段,活动只是作为“主要片段”的“驱动程序”或“片段管理器”以及它可能具有的任何可能的“片段子” ?
如果您愿意,我们非常欢迎您以这种方式设计您的用户界面。
我是否认为在清单文件中设置android:configChanges =“orientation | screenSize”实际上是正常的,只要您为横向和纵向视图使用相同的资源?
不,只要您的应用程序因其他所有配置更改(区域设置更改,SIM卡更改,键盘更改等)而中断。如果您使用android:configChanges
,通常需要以这种方式处理所有配置更改。