Configuração alterada (mudança de orientação) e destruição de atividades - é assim que deve funcionar?

Eu li como o Android lida com "alterações na configuração" - destruindo a Atividade ativa.

Eu realmente quero saber da equipe do Android por que isso acontece. Gostaria de receber uma explicação sobre como foi o raciocínio, porque não o entendo. O fato de agir dessa maneira coloca todos nós, a meu ver, em um mundo de dor.

Vamos supor que você tenha uma Atividade que apresenta um número de EditText: s, caixas de seleção etc. Se um Usuário começar a preencher esse formulário com texto / dados e depois alterar a orientação (ou receber uma Chamada Telefônica), todas as informações que o Usuário fez desaparecerão. Não encontrei nenhuma maneira de preservar o estado. Isso nos obriga a fazer uma codificação extremamente dolorosa para não perder todos os dados.

Na minha opinião, você precisa de outra classe "não-Atividade" (ouclasse "retenção de valor" talvez) que tenha um campo para cada "elemento do formulário" (EditText, caixa de seleção etc).

Para cada "elemento do formulário" existente, você precisa anexar um Evento como "onChanged" (ou onTextChanged ou algo parecido) que atualize o campo correspondente noclasse "retenção de valor" para garantir que cada caractere digitado (em um EditText por exemplo) seja salvo de uma só vez.

Talvez você possa usar algum ouvinte (como "onDestroy" ou algo assim) e, em seguida, preencher a classe de retenção de valor com dados.

Eu também encontreieste pedaço de informação onde eles falam sobre o uso do Bundle,onSaveInstanceState eonRestoreInstanceState, mas isso também significa que o programador precisa salvar manualmente e depois colocar novamente os valores no local correto? Essa abordagem é um pouco menos confusa do que minhas sugestões acima, mas ainda não é muito agradável.

Alguém pode me dizer que estou totalmente errado e que não é assim que funciona e que perdi totalmente algumas informações vitais?

questionAnswers(4)

yourAnswerToTheQuestion