我们什么时候需要覆盖onConfigurationChanged()的回调?

时间:2017-08-20 19:25:32

标签: android android-activity android-resources android-orientation android-configchanges

如果我们不想在配置更改期间重新启动活动,我们可以设置标记android:configChanges;

如果我们需要重新启动活动(即更新资源),我们不应该设置标志。

在什么情况下,我们是否需要在覆盖回调android:configChanges的同时设置标记onConfigurationChanged()

1 个答案:

答案 0 :(得分:2)

当您在清单中设置android:configChanges时,这意味着您告诉系统您将自己在Activity手动处理配置更改。

来自android:configChanges的{​​{3}}:

  

列出活动将自行处理的配置更改。什么时候   在运行时发生配置更改,活动将关闭   默认情况下重新启动,但使用此声明配置   属性将阻止活动重新启动。相反,   活动仍在运行,其onConfigurationChanged()方法是   调用。

因此,如果您在清单中设置configChanges,则必须覆盖onConfigurationChanged()回调并处理更改。否则,系统将自动处理更改 - 例如加载适当的资源 - 并且您不必覆盖onConfigurationChanged()回调。

同样来自doc:

  

应避免使用此属性,仅用作最后的手段。