Sobes.tech
Junior — Middle

Kaip užtikrinti esamos sistemos būsenos išsaugojimą keičiant konfigūraciją?

sobes.tech AI

Atsakymas iš AI

Android'e, konfigūracijos pakeitimo metu (pavyzdžiui, ekrano pasukimo) naudojamas Activity arba Fragment būsenos išsaugojimo mechanizmas.

Pagrindiniai būdai:

  1. onSaveInstanceState(Bundle outState) — metodas, kuriame galima išsaugoti būtinus duomenis į Bundle objektą. Šie duomenys bus prieinami aktyvumo iš naujo sukūrimo metu onCreate arba onRestoreInstanceState.

  2. ViewModel — iš architektūrinių Android komponentų, kuris išlaiko duomenis konfigūracijos pakeitimo metu ir nėra iš naujo sukuriamas kartu su aktyvumu.

  3. UI komponentų būsenos išsaugojimas — daugelis standartinių widget'ų automatiškai išsaugo savo būseną, jei jiems priskirtas unikalus identifikatorius.

Pavyzdys: skaitiklio būsenos išsaugojimas:

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
        // atnaujinti UI su dabartine counter reikšme
    }

    override fun onSaveInstanceState(outState: Bundle) {
        super.onSaveInstanceState(outState)
        outState.putInt("counter_key", counter)
    }
}

Šitaip, keičiant konfigūraciją, duomenys neprarandami, ir naudotojas mato tą patį interfeisą ir būseną.