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 — бисёри widgets стандартӣ ҳолати худро автоматӣ нигоҳ медоранд агар онҳо идентификатори беназир дошта бошанд.

Масалан, нигоҳдории ҳолати ҳисобкунак:

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)
    }
}

Тавре ки мебинем, дар вақти тағирёбии конфигуратсия маълумотҳо гум намешаванд ва корбар ҳамон интерфейс ва ҳолатро мебинад.