android - saveInstanceState + restoreInstanceState VS configChanges

标签 android android-manifest

我遇到了两种方法来防止 Activity 在屏幕旋转时重绘。 一种是 saveInstanceState + restoreInstanceState 组合,我仍然未能成功实现。

另一个是在manifest文件的activity标签中声明configChanges属性为orientation

我很好奇这两者之间有什么区别。

最佳答案

在一种情况下,您要处理所有 相关配置更改无需重新启动 Activity。而在第二个时间里,您只需处理所需的用户状态变量,即保存和恢复它们。

当在运行时发生配置更改时, Activity 默认关闭并重新启动,但使用 android:configChanges 属性声明配置将阻止 Activity 重新启动。相反, Activity 保持运行并调用其 onConfigurationChanged() 方法,自行处理配置更改是一项复杂的任务,应避免。

由于处理配置更改隐藏的复杂性,不建议您自己处理配置更改。

但是,如果您无法使用首选选项(onSaveInstanceState()、ViewModels 和持久存储)保留您的 UI 状态,您可以改为阻止系统在某些配置更改期间重新启动您的 Activity。当配置发生变化时,您的应用程序将收到回调,以便您可以根据需要手动更新您的 Activity 。

[Reference link]

关于android - saveInstanceState + restoreInstanceState VS configChanges,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59579809/

相关文章:

java - Matcher.replaceAll() 和 String.replaceAll() 似乎不适用于 Galaxy S 6

java - 将图像 url 存储在共享首选项中并在 Recyclerview 中显示它们

android - 我的 android 应用程序上的 java.lang.ClassNotFoundException 但我不知道为什么

android - WebView 不适用于 INTERNET 权限集

android - 如何使用新的 list 合并(Android Studio 和 Gradle)?

android - 具有特定格式的深度链接

android - 从其他应用程序启动 facebook 应用程序

java - Android:未找到启动器 Activity !是否检查了启动器

android - App卸载后如何删除数据?

android - Playstore提示到 'Declare sensitive permissions'