gpt4 book ai didi

android - 如果我可以使用 android :configChanges ="keyboard|orientation|screenLayout",为什么还需要 setRetainInstance 或 onSaveInstance

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:31:21 25 4
gpt4 key购买 nike

为什么我需要使用 setRetainInstance()onSaveInstance() 来保存状态,而我可以使用 android:configChanges="keyboard|orientation|screenLayout “ 并获得相同的“保存状态非 UI 状态”?我的意思是减少头痛。

最佳答案

不要使用android:configChanges。它会以微妙的方式破坏事物,并会阻止 Android 为当前配置获取正确的布局/主题/尺寸等。

onSaveInstanceState() 与此完全正交:您需要保存状态,以便在 Android 终止进程以节省内存时恢复状态。 configChagnes 仅阻止它在旋转、键盘状态更改等时重新创建 Activity 。

setRetainInstance() 适用于您不希望在设备旋转等情况下重新创建的 fragment 。如果您不调用它,Android 将在 Bundle 中序列化它们的状态,然后重新- 与父 Activity 一起创建它们。

简而言之,虽然 configChanges 看起来是一个“快捷方式”,但实际上并非如此。不要依赖它,并根据需要使用适合每种情况的适当工具来保存/恢复状态。

关于android - 如果我可以使用 android :configChanges ="keyboard|orientation|screenLayout",为什么还需要 setRetainInstance 或 onSaveInstance,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11822325/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com