Xamarin.Android ListView e o ciclo de vida da atividade
As atividades passam por determinados estados à medida que seu aplicativo é executado, como iniciar, executar, ser pausado e ser interrompido. Para obter mais informações e diretrizes específicas sobre como lidar com transições de estado, consulte o Tutorial do Ciclo de Vida da Atividade.
É importante entender o ciclo de vida da atividade e colocar seu ListView
código nos locais corretos.
Todos os exemplos neste documento executam 'tarefas de instalação' no método da OnCreate
Atividade e (quando necessário) executam 'teardown' em OnDestroy
. Os exemplos geralmente usam pequenos conjuntos de dados que não são alterados, portanto, recarregar os dados com mais frequência é desnecessário.
No entanto, se os dados forem alterados com frequência ou usarem muita memória, talvez seja apropriado usar diferentes métodos de ciclo de vida para preencher e atualizar o ListView
. Por exemplo, se os dados subjacentes estiverem mudando constantemente (ou podem ser afetados por atualizações em outras atividades), crie o adaptador em OnStart
ou OnResume
garantirá que os dados mais recentes sejam exibidos sempre que a Atividade for mostrada.
Se o Adaptador usar recursos como memória ou um cursor gerenciado, lembre-se de liberar esses recursos no método complementar para onde eles foram instanciados (por exemplo, objetos criados em OnStart
podem ser descartados em OnStop
).
Alterações de configuração
É importante lembrar que as alterações de configuração – especialmente a rotação da tela e a visibilidade do teclado – podem fazer com que a atividade atual seja destruída e recriada (a menos que você especifique o contrário usando o ConfigurationChanges
atributo ). Isso significa que, em condições normais, girar um dispositivo fará com que um ListView
e Adapter
sejam recriados e (a menos que você tenha escrito código em OnPause
e OnResume
) os estados de seleção de linha e posição de rolagem serão perdidos.
O seguinte atributo impediria que uma atividade fosse destruída e recriada como resultado de alterações de configuração:
[Activity(ConfigurationChanges="keyboardHidden|orientation")]
Em seguida, a Atividade deve substituir OnConfigurationChanged
para responder a essas alterações adequadamente. Para obter mais detalhes sobre como lidar com as alterações de configuração, consulte a documentação.