Why should I need setRetainInstance or onSaveInstance if I can use android:configChanges=“keyboard|orientation|screenLayout”

前端 未结 1 917
一生所求
一生所求 2020-12-21 02:44

Why should I need to use setRetainInstance() or onSaveInstance() to save state and I can use android:configChanges=\"keyboard|orientation|scr

相关标签:
1条回答
  • 2020-12-21 02:59

    Don't use android:configChanges. It will break things in subtle ways and will prevent Android from getting the proper layout/theme/dimensions, etc. for the current configuration.

    onSaveInstanceState() is completely orthogonal to this: you need to save state so you can restore it if Android kills your process to save memory. configChagnes only prevents it from re-creating the activity on rotation, keyboard state changes, etc.

    setRetainInstance() is for fragments that you don't want re-created on device rotation, etc. If you don't call it, Android will serialize their state in a Bundle, and re-create them along with the parent activity.

    In short, while configChanges appears to be a 'shortcut' it is not. Don't rely on it and save/restore state as necessary using the proper tools for each case.

    0 讨论(0)
提交回复
热议问题