我遇到了两种方法来防止 Activity 在屏幕旋转时重绘。 一种是 saveInstanceState + restoreInstanceState 组合,我仍然未能成功实现。
另一个是在manifest文件的activity标签中声明configChanges属性为orientation
我很好奇这两者之间有什么区别。
最佳答案
在一种情况下,您要处理所有 相关配置更改无需重新启动 Activity。而在第二个时间里,您只需处理所需的用户状态变量,即保存和恢复它们。
当在运行时发生配置更改时, Activity 默认关闭并重新启动,但使用 android:configChanges 属性声明配置将阻止 Activity 重新启动。相反, Activity 保持运行并调用其 onConfigurationChanged() 方法,自行处理配置更改是一项复杂的任务,应避免。
由于处理配置更改隐藏的复杂性,不建议您自己处理配置更改。
但是,如果您无法使用首选选项(onSaveInstanceState()、ViewModels 和持久存储)保留您的 UI 状态,您可以改为阻止系统在某些配置更改期间重新启动您的 Activity。当配置发生变化时,您的应用程序将收到回调,以便您可以根据需要手动更新您的 Activity 。
关于android - saveInstanceState + restoreInstanceState VS configChanges,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59579809/