Ciclo de vida de atividade/processo - Quando salvar/carregar dados de para/para o disco
-
05-07-2019 - |
Pergunta
Meu aplicativo é feito de duas atividades, A e B. Estou considerando esta sequência de etapas:
- Atividade A é iniciada.
- A lançamentos B [A é pausado, B está em execução].
- B lança uma intenção de mapa [A e B estão paradas agora].
Agora, o usuário está usando o aplicativo Maps e o sistema decide que precisa de mais memória. O sistema pode matar apenas um das minhas atividades para a memória, ou sempre matará tudo atividades em um "processo" nesta situação?
Ambas as atividades compartilham alguns dados estáticos como:
class Data {
public static String mName;
public void save() {
// write to file: mName;
}
public void load() {
// mName = read from file;
}
}
ActivityA.mTextView.setText(Data.mName);
ActivityB.mListView.addText(Data.mName);
Portanto, quando qualquer atividade no meu aplicativo é atribuída a serem chamadas () chamado, eu chamo data.save () para gravar no disco. Agora, a questão é que, no método OnCreate () de uma atividade, devo simplesmente verificar se data.mname == null e, se sim, assuma que a atividade está retornando de um estado de matança e tente restaurar o disco novamente? Não estou claro quando essa restauração deve ser feita, considerando a atividade A pode ou não estar vivo etc. - e eu não quero corromper o estado se a atividade A ainda estiver viva, mas B está voltando de um estado de matar,
Obrigado
Obrigado
Solução
Provavelmente, a melhor solução é mover seus dados estáticos para um serviço. Dessa forma, os dados podem ser salvos e restaurados quando o Android desligar o serviço, e não quando o Android desliga qualquer uma das atividades individuais usando os dados.
Sem usar um serviço (ou alternadamente um provedor de conteúdo, ou mesmo substituir o aplicativo, embora isso pareça ter desaprovado), você deve gerenciar esse ciclo de vida, o que como você viu pode ser complicado.