Как да се осигури запазването на текущото състояние на системата при промяна на конфигурацията?
sobes.tech AI
Отговор от AI
В Android, за съхраняване на текущото състояние на системата при промяна на конфигурацията (например, завъртане на екрана), се използва механизмът за запазване на състоянието на Activity или Fragment.
Основни методи:
-
onSaveInstanceState(Bundle outState) — метод, в който можете да запазите необходимите данни в обект Bundle. Тези данни ще бъдат достъпни при повторното създаване на Activity в onCreate или onRestoreInstanceState.
-
ViewModel — компонент от архитектурните компоненти на Android, който запазва данните при промяна на конфигурацията и не се създава отново заедно с Activity.
-
Запазване на състоянието на UI компонентите — много стандартни widget-и автоматично запазват своето състояние, ако имат уникален идентификатор.
Пример за запазване на състоянието на брояч:
class MainActivity : AppCompatActivity() {
private var counter = 0
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
counter = savedInstanceState?.getInt("counter_key") ?: 0
// актуализиране на UI с текущата стойност на counter
}
override fun onSaveInstanceState(outState: Bundle) {
super.onSaveInstanceState(outState)
outState.putInt("counter_key", counter)
}
}
По този начин, при промяна на конфигурацията, данните няма да се загубят и потребителят ще види същия интерфейс и състояние.