为什么我需要使用setRetainInstance()
或onSaveInstance()
保存状态,我可以使用android:configChanges="keyboard|orientation|screenLayout"
和获得相同的“保存状态非 UI 状态”?我的意思是减少头痛。
问问题
2001 次
1 回答
7
不要使用android:configChanges
. 它会以微妙的方式破坏事物,并阻止 Android 为当前配置获取正确的布局/主题/尺寸等。
onSaveInstanceState()
与此完全正交:您需要保存状态,以便在 Android 杀死您的进程以节省内存时恢复它。configChagnes
仅防止它重新创建旋转活动、键盘状态更改等。
setRetainInstance()
用于您不希望在设备旋转等时重新创建的片段。如果您不调用它,Android 将在 Bundle 中序列化它们的状态,并与父活动一起重新创建它们。
简而言之,虽然configChanges
看起来是一条“捷径”,但它不是。不要依赖它,并根据需要使用适合每种情况的工具来保存/恢复状态。
于 2012-08-06T03:51:21.503 回答