如果我的GLSurfaceView应用程序永远不需要读取Android设备的区域设置,我可以安全地忽略区域设置配置更改吗?

时间:2012-07-11 14:58:29

标签: android glsurfaceview android-configchanges

默认情况下,如果用户在我的应用运行时更改其设备的显示语言,Android将销毁然后重新创建活动。这样做是为了确保我的应用程序正确使用最新设置。

我可以通过将locale添加到清单中的configChanges属性来覆盖此行为。然后当用户更改语言时,我只会回调onConfigChanged()而不是完全重启。但是documentation说我应该"检索所有资源"再次:

  

所有这些配置更改都会影响应用程序看到的资源值。因此,当调用onConfigurationChanged()时,通常需要再次检索所有资源(包括视图布局,可绘制内容等)以正确处理更改。

我的问题是,这对于区域设置更改是否真的如此?如果我有一个假设的应用程序根本不使用用户的语言设置,并且只使用GLSurfaceView渲染图形,那么忽略此事件是否安全?如果是这样,你能用文件备份吗?

忽略事件似乎才能正常运行,并且当我没有使用任何语言环境时重新创建视图没有多大意义,但我想要确定我没有引入一些微妙的错误。

非常感谢任何信息。

1 个答案:

答案 0 :(得分:1)

正如您所说,您的GLSurfaceView完全独立于区域设置,可以将locale添加到configChanges,因为如果您的布局可以添加keyboardscreenSize永远不会改变,具体取决于那些配置。

修改:文档:http://developer.android.com/guide/topics/resources/runtime-changes.html

  

但是,您可能会遇到这样一种情况,即重新启动应用程序并恢复大量数据的成本可能会很高,并且会产生糟糕的用户体验。在这种情况下,您还有两个选择:< / p>      

[...]

     

湾自己处理配置更改

     

防止系统在某些配置更改期间重新启动您的活动,但在配置更改时收到回调,以便您可以根据需要手动更新活动。

另外:http://developer.android.com/guide/topics/resources/runtime-changes.html#HandlingTheChange

  

如果您的应用程序在特定配置更改期间不需要更新资源,并且您有性能限制要求您避免重新启动活动,那么您可以声明您的活动自己处理配置更改,这会阻止系统从重新开始你的活动。