2
respostas

O Android recria a activity quando rotacionamos o device?

Estou tentando entender como ele recria o layout usando o modo landscape para activites, já que definimos o .xml apenas no método onCreate. Se por exemplo estou fazendo algum fetch no meu servidor no método onCreate, eu faria a chamada novamente quando a orientation mudasse.

2 respostas

Você deveria tratar essas situações, pois toda vez que o device é rotacionado o Android recria as atividades assim ele chama o onCreate novamente porem com o savedInstanceState diferente de null, no caso, você deveria tratar/salvar o status da tela ou os dados no momento da rotação pelo metodo onSaveInstanceState(), assim você trata logicamente a rotação quando a atividade for recriada, se for necessário refazer ou não a chamada do seu servidor quem decidirá é sua lógica de negócio.

Uma opção como exemplo: você poderia salvar o retorno de sua chamada do service como uma variável, e ao rotacionar, você salva esses dados no Bundle do método onSaveInstanceState() e ao recriar a atividade você verifica se savedInstanceState for diferente de null você restaura os dados se não você faz a chamada no seu service, pois, quando o savedInstanceState for igual a null seria a primeira vez que essa atividade está sendo criada.

 override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        if (null == savedInstanceState) {
            chronometer = Chronometer()
        }else{
            chronometer = savedInstanceState.getSerializable("chronometer") as Chronometer
        }
}

  override fun onSaveInstanceState(outState: Bundle) {
        outState.putSerializable("chronometer", chronometer)
}

Faz todo sentido.

Obrigado, Guilherme.