Histórico Rápido
Por padrão, quando certas alterações de configuração de chave ocorrem no Android (um exemplo comum é uma alteração de orientação), o Android reinicia completamente a Atividade em execução para ajudá-lo a se ajustar a essas alterações.
Ao definir android:configChanges="keyboardHidden|orientation"
no AndroidManifest, você está dizendo ao Android: "Por favor, não faça a redefinição padrão quando o teclado for puxado ou o telefone estiver girado; eu mesmo quero lidar com isso. Sim, eu sei o que estou fazendo "
Isto é uma coisa boa? Veremos em breve ...
Não se preocupe?
Um dos profissionais com os quais você começa é o seguinte:
não precisa se preocupar com a sua atividade ter sido rotacionada
Em muitos casos, as pessoas acreditam erroneamente que quando têm um erro que está sendo gerado por uma mudança de orientação ("rotação"), elas podem simplesmente corrigi-lo inserindo android:configChanges="keyboardHidden|orientation"
.
No entanto, android: configChanges = "keyboardHidden | orientação" nada mais é do que um bandaid. Na verdade, existem muitas maneiras pelas quais uma alteração na configuração pode ser acionada. Por exemplo, se o usuário selecionar um novo idioma (ou seja, a localidade mudou), sua atividade será reiniciada da mesma maneira que ocorre por uma mudança de orientação. Se você quiser, pode ver uma lista de todos os diferentes tipos de alterações na configuração .
Editar : Mais importante, porém, como o hackbod aponta nos comentários, sua atividade também será reiniciada quando o aplicativo estiver em segundo plano e o Android decidir liberar memória matando-o. Quando o usuário retornar ao seu aplicativo, o Android tentará reiniciar a atividade da mesma maneira que ocorre se houver alguma outra alteração na configuração. Se você não conseguir lidar com isso - o usuário não ficará feliz ...
Em outras palavras, usar android:configChanges="keyboardHidden|orientation"
não é uma solução para suas "preocupações". O caminho certo é codificar suas atividades para que elas fiquem felizes com qualquer reinício do Android. Esta é uma boa prática que irá ajudá-lo no caminho, para se acostumar.
Então, quando devo usá-lo?
Como você mencionou, há uma vantagem distinta. Substituir a alteração de configuração padrão para uma rotação, manipulando você mesmo, acelerará as coisas. No entanto, essa velocidade vem com um preço de conveniência.
Simplificando, se você usar o mesmo layout para retrato e paisagem, estará em boa forma fazendo a substituição. Em vez de uma recarga completa da atividade, as visualizações simplesmente mudarão para preencher o espaço restante.
No entanto , se, por algum motivo, você usar um layout diferente quando o dispositivo estiver em modo paisagem, o fato de o Android recarregar sua Atividade será bom, pois ele carregará o layout correto. [Se você usar a substituição em uma atividade desse tipo e quiser fazer um novo layout mágico em tempo de execução ... boa sorte - está longe de ser simples]
Resumo Rápido
Por todos os meios, se android:configChanges="keyboardHidden|orientation"
for certo para você, use-o. Mas lembre- se de testar o que acontece quando algo muda, porque uma mudança de orientação não é a única maneira de ativar uma reinicialização completa da atividade.