Жизненный цикл действия / процесса - когда сохранять / загружать данные на диск / с диска

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

  •  05-07-2019
  •  | 
  •  

Вопрос

Мое приложение состоит из двух действий, A и B.Я рассматриваю эту последовательность шагов:

  • Начато действие A.
  • A запускает B [A приостановлено, B запущено].
  • B запускает намерение карты [теперь оба A и B приостановлены].

Теперь пользователь использует приложение maps, и система решает, что ему требуется больше памяти.Может ли система убить только один о моей деятельности на память, или это всегда будет убивать ВСЕ деятельность в "процесс" в такой ситуации?

Оба действия совместно используют некоторые статические данные, такие как:

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

поэтому, когда какое-либо действие в моем приложении вызывается onSaveInstanceBundleSate(), я вызываю Data.save(), чтобы записать его на диск.Теперь вопрос в том, должен ли я в методе onCreate() действия просто проверить, является ли Data.mName == null , и если да, предположим, что Действие возвращается из состояния завершения, и попробуйте восстановить с диска снова?Мне неясно, когда следует выполнить это восстановление, учитывая, что Действие А может быть, а может и не быть все еще живым и т.д.- и я не хочу портить состояние, если Активность A все еще жива, но B возвращается из состояния уничтожения,

Спасибо

Спасибо

Это было полезно?

Решение

Вероятно, лучшим решением является перемещение ваших статических данных в Сервис.Таким образом, данные могут быть сохранены и восстановлены, когда Android завершает работу Службы, а не когда Android завершает любое из отдельных действий, использующих данные.

Без использования Сервиса (или, альтернативно, Поставщика контента, или даже переопределяющего приложения, хотя это, кажется, вызывает неодобрение) вам приходится управлять этим жизненным циклом самостоятельно, что, как вы видели, может быть непросто.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top