为什么我需要使用setRetainInstance()
或onSaveInstance()
来保存状态,我可以使用android:configChanges="keyboard|orientation|screenLayout"
并获取相同的内容“保存状态非UI状态”?我的意思是减少头痛。
答案 0 :(得分:7)
请勿使用android:configChanges
。它会以微妙的方式破坏事物并阻止Android获得当前配置的正确布局/主题/尺寸等。
onSaveInstanceState()
与此完全正交:您需要保存状态,以便在Android杀死您的进程以节省内存时可以恢复它。 configChagnes
仅阻止它在轮换,键盘状态更改等方面重新创建活动。
setRetainInstance()
适用于您不希望在设备轮换时重新创建的片段等。如果您不调用它,Android将在Bundle中序列化其状态,并重新创建它们父活动。
简而言之,虽然configChanges
似乎是一种“捷径”,但事实并非如此。不要依赖它并根据需要使用适当的工具保存/恢复状态。