Problemas ao rotacionar a tela do android ou conectar novo dipositivo de entrada de dados, o android automaticamente cria novamente a tela da aplicação, e assim a entrada de texto ou dados armazenados nela são perdidos, como solucionar?
Para resolver esse problema temos uma solução muito simples, mas primeiramente vamos entender o motivo de o android perder esses dados ao efetuar essas atualizações de tela ou dispositivos de entrada.
Ao rotacionar a tela do aparelho, ou conectando um teclado, leitora de códigos ou outro dispositivo que gere um pequeno toast dizendo que o dispositivo foi conectado, essa ação é invocada pelo android avisando para que sua aplicação seja atualizada, pois existem coisas novas no dispositivo que a aplicação pode ou não utilizar…
E com isso por padrão essa chamada é invocada automaticamente e os dados da aplicação são perdidos, pois o código não diz ao android como se comportar no caso especifico.
Vamos ao que interessa?
A solução mais simples encontrada para contornar essa situação é configurar seu AndroidManifest.xml que fica em app/manifests/AndroidManifest.xml
Então em todas as suas activitys que não podem perder dados caso ocorra essa atualização de tela, você deve adicionar a seguinte linha de código.
<activity android:name=".MyActivity"
android:configChanges="parametros necessários"
android:label="@string/app_name">
Para correção de atualização de tela utilize
android:configChanges="orientation|screenSize"
Para novos dispositivos de entrada conectados utilize
android:configChanges="keyboard|keyboardHidden"
Um exemplo abaixo utilizando as duas opções ao mesmo tempo
<activity android:name=".MyActivity"
android:configChanges="orientation|screenSize|keyboard|keyboardHidden"
android:label="@string/app_name">
Com isso o android automaticamente entende que você quer manter as configurações dessa tela, e depois que a aplicação é atualizada os dados são recuperados, sem a menor percepção do usuário.