Sobes.tech
Junior — Middle

Kuidas tagada süsteemi praeguse oleku säilitamine konfiguratsiooni muutmisel?

sobes.tech AI

Vastus AI-lt

Androidis, konfiguratsiooni muutmisel (näiteks ekraani pööramisel) kasutatakse Activity või Fragment'i oleku salvestamise mehhanismi.

Peamised viisid:

  1. onSaveInstanceState(Bundle outState) — meetod, milles saab salvestada vajalikke andmeid Bundle objekti. Need andmed on saadaval Activity uuesti loomisel onCreate või onRestoreInstanceState meetodites.

  2. ViewModel — Androidi arhitektuurikomponentidest, mis säilitavad andmeid konfiguratsiooni muutmisel ning ei loo uuesti koos Activity-ga.

  3. UI komponentide oleku salvestamine — paljud standardvijetid salvestavad automaatselt oma oleku, kui neil on unikaalne identifikaator.

Näide: loenduri oleku salvestamine:

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
        // uuenda UI praeguse counter väärtusega
    }

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

Sellisel viisil ei kao andmed konfiguratsiooni muutmisel ning kasutaja näeb sama kasutajaliidest ja olekut.