Sobes.tech
Junior — Middle

Como garantir a preservação do estado atual do sistema ao alterar a configuração?

sobes.tech IA

Resposta da IA

No Android, para guardar o estado atual do sistema ao alterar a configuração (por exemplo, rotação da tela), utiliza-se o mecanismo de salvaguarda do estado da Activity ou Fragment.

Principais métodos:

  1. onSaveInstanceState(Bundle outState) — método onde podem ser guardados os dados necessários num objeto Bundle. Estes dados estarão disponíveis ao recriar a Activity no método onCreate ou onRestoreInstanceState.

  2. ViewModel — componente dos componentes arquiteturais do Android, que guarda dados ao alterar a configuração e não é recriado juntamente com a Activity.

  3. Guardar o estado dos componentes UI — muitos widgets padrão guardam automaticamente o seu estado se tiverem um identificador único.

Exemplo de guardar o estado de um contador:

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
        // atualizar a UI com o valor atual do counter
    }

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

Assim, ao alterar a configuração, os dados não se perdem e o utilizador verá a mesma interface e estado.