переменные, сохраняющие значения после закрытия приложения - PullRequest
0 голосов
/ 02 августа 2011

Мое приложение сохраняет все значения переменных при закрытии, и это влияет на его работу при повторном открытии. Есть ли способ сбросить их все после закрытия приложения? или есть способ очистить приложение из памяти, если оно закрыто, так сказать? На данный момент я только что установил все важные переменные "= 0" в последние несколько строк выполнения, но я знаю, что должен быть правильный способ сделать это.

EDIT:

ОК. Я подумал, что здесь будет проще ответить, а не каждому лично.

Приложение действительно остается живым в фоновом режиме, я проверил с помощью расширенного убийцы задач. Как бы я получить AP, чтобы «умереть», нажав кнопку назад? Я думаю, что это будет самое простое решение, учитывая, как работает приложение:

открыть приложение> нажать кнопку «Пуск»> нажать кнопку «Стоп»> экран результатов> нажать кнопку «Назад» для выхода.

, поэтому каждый раз, когда приложение запускается, выполнение должно выполняться независимо.

Ответы [ 6 ]

2 голосов
/ 02 августа 2011

Вам необходимо ознакомиться с жизненным циклом Activity .

Вы можете использовать onResume() для сброса ваших переменных; также обратите внимание onDestory() и onPause().

UPDATE:

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

2 голосов
/ 02 августа 2011

Переопределить методы onPause, onResume и onDestroy.onPause должен сохранять что-либо после приостановки, onResume должен перезагружать эти значения при возобновлении, и onDestroy будет вызываться при закрытии вашего приложения.Вы можете убирать вещи в onDestroy.См. эту ссылку.

2 голосов
/ 02 августа 2011

Ваше приложение, вероятно, не закрывается, но остается в фоновом режиме.Проверьте расширенный диспетчер задач и посмотрите, запущено ли приложение.

1 голос
/ 02 августа 2011

Мне нравится то, что сказали @Alex и @Jack. Чтобы добавить к этому, также учтите, что вы можете вызвать finish() в вашем Activity, если хотите заставить его закрыться и вернуться к последнему действию. В связи с этим также рассмотрим использование setResult(int) ( JavaDoc Here )

Вы также можете установить флаг на Intent при вызове Activity, о котором вы спрашиваете. Может быть полезен флаг типа FLAG_ACTIVITY_NO_HISTORY :

Если установлено, новое действие не сохраняется в стеке истории. Как только пользователь уходит от него, действие заканчивается. Это также может быть установлено с атрибутом noHistory.

Список Намеченные флаги

0 голосов
/ 02 августа 2011

метод onResume () позволит вам сбросить переменные, когда программа возобновит работу, но также сделает это, когда вы вернетесь к действию, если вы не добавите логику, которая говорит, что вы приходите в приложение, а не на домашнюю страницу.Может быть, onRestart () - это то, что вам действительно нужно?Я не уверен, но это возможно с onResume.

0 голосов
/ 02 августа 2011

Неинициализированные переменные плохие.Не делай этого.ВСЕГДА сбрасывайте переменные вручную перед первым использованием.

...