Ciclo di vita di attività / processo: quando salvare / caricare i dati sul / dal disco

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

  •  05-07-2019
  •  | 
  •  

Domanda

La mia app è composta da due attività, A e B. Sto considerando questa sequenza di passaggi:

  • L'attività A è iniziata.
  • A avvia B [A è in pausa, B è in esecuzione].
  • B avvia un intento mappa [A e B sono entrambi in pausa ora].

Ora l'utente utilizza l'applicazione mappe e il sistema decide che necessita di più memoria. Il sistema può uccidere solo una delle mie attività per la memoria o ucciderà sempre tutte le attività in un processo " " in questa situazione?

Entrambe le attività condividono alcuni dati statici come:

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);

quindi quando qualsiasi attività nella mia app viene attivataSaveInstanceBundleSate (), chiamo Data.save () per scriverlo sul disco. Ora la domanda è, nel metodo onCreate () di un'attività, dovrei semplicemente controllare per vedere se Data.mName == null, e in tal caso, supporre che l'attività stia tornando da uno stato kill e provare a ripristinare di nuovo dal disco? Non sono chiaro quando dovrebbe essere eseguito questo ripristino, considerando che l'attività A può o non può essere ancora viva ecc. - E non voglio corrompere lo stato se l'attività A è ancora viva ma B ritorna da uno stato di uccisione,

Grazie

Grazie

È stato utile?

Soluzione

Probabilmente la soluzione migliore è spostare i tuoi dati statici in un Servizio. In questo modo i dati possono essere salvati e ripristinati quando Android arresta il Servizio anziché quando Android chiude una delle singole attività utilizzando i dati.

Senza utilizzare un servizio (o in alternativa un fornitore di contenuti, o persino l'applicazione prioritaria, anche se sembra essere disapprovato), devi gestire tu stesso quel ciclo di vita, che come hai visto può essere difficile.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top