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

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

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

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

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

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 () класса Activity просто проверить, является ли Data.mName == null, и если да, предположить, что Activity возвращается из состояния уничтожения, и попробовать восстановить с диска снова? Мне неясно, когда следует выполнить это восстановление, учитывая, что действие A может быть, а может и не быть, еще живым и т. Д. - и я не хочу портить состояние, если действие A все еще живо, но B возвращается из состояния уничтожения,

Спасибо

Спасибо

1 Ответ

1 голос
/ 26 ноября 2009

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...