Sobes.tech
Junior — Middle

Как да се осигури запазването на текущото състояние на системата при промяна на конфигурацията?

sobes.tech AI

Отговор от AI

В Android, за съхраняване на текущото състояние на системата при промяна на конфигурацията (например, завъртане на екрана), се използва механизмът за запазване на състоянието на Activity или Fragment.

Основни методи:

  1. onSaveInstanceState(Bundle outState) — метод, в който можете да запазите необходимите данни в обект Bundle. Тези данни ще бъдат достъпни при повторното създаване на Activity в onCreate или onRestoreInstanceState.

  2. ViewModel — компонент от архитектурните компоненти на Android, който запазва данните при промяна на конфигурацията и не се създава отново заедно с Activity.

  3. Запазване на състоянието на 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)
    }
}

По този начин, при промяна на конфигурацията, данните няма да се загубят и потребителят ще види същия интерфейс и състояние.