Cycle de vie des activités / processus - quand sauvegarder / charger des données sur / à partir du disque

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

  •  05-07-2019
  •  | 
  •  

Question

Mon application est composée de deux activités, A et B. J'envisage cette séquence d'étapes:

  • L'activité A est lancée.
  • A lance B [A est en pause, B est en cours d'exécution].
  • B lance une intention sur la carte [A et B sont tous deux mis en pause maintenant].

Maintenant, l’utilisateur utilise l’application Cartes et le système décide qu’il a besoin de plus de mémoire. Le système peut-il tuer seulement une de mes activités pour mémoire, ou va-t-il toujours tuer toutes les activités dans un " processus "? dans cette situation?

Les deux activités partagent des données statiques telles que:

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

donc quand une activité de mon application obtient onSaveInstanceBundleSate () appelée, j'appelle Data.save () pour l'écrire sur le disque. Maintenant, la question est la suivante: dans la méthode onCreate () d'une activité, dois-je simplement vérifier si Data.mName == null et si tel est le cas, supposer que l'activité est en train de revenir d'un état de suppression et essayer de restaurer à partir du disque? Je ne sais pas quand cette restauration devrait être effectuée, étant donné que l'activité A peut ou non être toujours active, etc. - et je ne souhaite pas corrompre l'état si l'activité A est toujours active mais que B revient d'un état de destruction,

Merci

Merci

Était-ce utile?

La solution

La meilleure solution est probablement de transférer vos données statiques vers un service. Ainsi, les données peuvent être sauvegardées et restaurées lorsque Android ferme le service plutôt que lorsque Android ferme l'une ou l'autre des activités individuelles utilisant les données.

Sans utiliser un service (ou alternativement un fournisseur de contenu, ou même une application primordiale bien que cela semble être mal vu), vous devez gérer vous-même ce cycle de vie, ce qui, comme vous l'avez vu, peut être délicat.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top