Pessoal,
Estou com o seguinte problema:
escrevi uma view usando Canvas que lista parte do conteúdo de array.
Ao alterar a orientação da tela de retrato p/paisagem ou vice-versa o conteúdo exibido é atualizado.
Segundo pesquisei na net, o método invalidate “provoca” isso.
Removi os invalidates da minha view, mas o problema persiste.
Tem como resolver isto?
Não lembro exatamente qual método recebe isso, mas com certeza lembro que ele é disparado na Activity se programada para receber “orientationChanges”.
Mas já adianto, que o Android VAI reconstruir a Activity então é melhor você considerar recriar sua View também.
Ao mudar a orientação da tela, a Activity se destrói (e se recria), bem como a View.
Ele chama o OnPause(), OnDestroy() e o OnCreate().
Também chama um método chamado onConfigurationChanged(), se eu não me engano (acho que essa é realmente tua pergunta).
E para resolver, depende o que tu quer.
Tu quer que a tela não rotacione?
Tu quer que a tela rotacione mais não se destrua? Ai acho que não é possível! O que tu pode fazer é guardar o estado dela e recriar do ponto onde parou.
O comportamento default é encerrar a activity e recriá-la (onDestroy / onCreate).
Se desejar salvar alguma informação, use o método onSaveInstanceState e restaure com o método onCreate ou onRestoreInstanceState.
Outra opção é mudar o comportamento default, para não encerrar/recriar a activity, usando o atributo android:configChanges da activity no manifest, onde você informa quais mudanças você vai tratar por código (por conta própria). Quando essas alterações ocorrer a activity vai receber esse evento no método onConfigurationChanged, onde você trata as alterações.
Veja mais aqui: http://developer.android.com/guide/topics/resources/runtime-changes.html
Obrigado a todos pelas respostas.