Ciclo de vida de atividade/processo - Quando salvar/carregar dados de para/para o disco

StackOverflow https://stackoverflow.com/questions/1801500

  •  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

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top