Middle
Qual é a especificidade da troca de posições na plataforma Android?
sobes.tech IA
Resposta da IA
Ao alterar posições (rotação de ecrã ou outras alterações de configuração) no Android, a Activity atual é destruída e uma nova é criada.
O que acontece:
- Os ciclos de vida da antiga Activity são chamados:
onPause(),onStop(),onDestroy(). - A antiga Activity é removida da memória.
- Uma nova Activity é criada.
- Os ciclos de vida da nova Activity são chamados:
onCreate(),onStart(),onResume().
Especificidades para QA:
- Perda de dados: Dados não guardados nos campos de entrada, elementos selecionados em listas, etc., podem ser perdidos se a sua preservação não for implementada.
- Estado da UI: A visibilidade dos elementos, a posição do scroll, as abas selecionadas e outros estados da UI podem ser redefinidos para o padrão.
- Operações em segundo plano: Tarefas em background em execução (como carregamento de dados) podem ser interrompidas ou terminarem incorretamente.
- Desempenho: Múltiplas mudanças de configuração podem diminuir a performance da aplicação devido à constante recriação da Activity.
- Fugas de memória: Gestão incorreta de recursos (como Listeners não desregistrados em
onDestroy()) pode levar a fugas de memória.
Como é tratado pelos desenvolvedores (e o que o QA deve verificar primeiro):
- Guardar estado: Uso de
onSaveInstanceState(),onRestoreInstanceState(), ViewModel, Android Architecture Components (AAC).// Exemplo de guardar dados em onSaveInstanceState() @Override public void onSaveInstanceState(@NonNull Bundle outState) { super.onSaveInstanceState(outState); outState.putString("saved_text", myEditText.getText().toString()); }// Exemplo de restaurar dados em onCreate() @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); if (savedInstanceState != null) { String savedText = savedInstanceState.getString("saved_text"); if (savedText != null) { myEditText.setText(savedText); } } } - Tratamento de mudanças de configuração: Declaração de
android:configChangesnoAndroidManifest.xmlpara casos onde a recriação da Activity não é necessária (cenário menos comum para mudança de orientação, mas utilizado para outras mudanças de configuração). - Ciclo de vida do ViewModel: O ViewModel mantém seu estado durante mudanças de configuração e não é destruído junto com a Activity.
- Fragments: Gestão adequada do ciclo de vida dos Fragments.
Testes específicos para mudança de posições:
- Simulação de rotações em diferentes dispositivos e emuladores.
- Teste de guardar e restaurar dados após mudança de posição.
- Verificação do estado da UI (visibilidade, texto, scroll, elementos selecionados).
- Teste de interrupção e continuação de tarefas em background.
- Verificação de fugas de memória (uso do Android Profiler).
- Testes de stress: mudanças rápidas e repetidas de posição.
Ferramentas para QA:
- Android Studio (para depuração, visualização de logs, uso do Profiler).
- comandos adb para simular rotações.
- diferentes emuladores e dispositivos reais com diferentes resoluções e versões do Android.