Жизненный цикл активности Android - отличается в зависимости от способа установки? - PullRequest
0 голосов
/ 03 августа 2011

Я только что заметил странное поведение с моим приложением Android 2.3.3. Я могу написать дополнительный код, чтобы справиться с этим, но я хотел бы понять, почему это происходит в первую очередь!

Когда я устанавливаю через XCode (просто нажимая F11 и отлаживая в обычном режиме), жизненный цикл для одного из моих действий выглядит следующим образом: когда я просто запускаю приложение, позволяю появиться активности, нажмите кнопку home на моем устройстве, чтобы закрыть его (сверните его), затем снова откройте.

onCreate
onStart
onResume
onPause
onStop
onRestart
onStart
onResume

Однако, если я экспортирую приложение в APK и устанавливаю его по электронной почте, я получаю следующее:

onCreate
onStart
onResume
onPause
onStop
onCreate ******
onStart
onResume

... что точно так же, за исключением того, что onCreate вызывается на этот раз, когда я снова открываю приложение.

Я посмотрел документацию по жизненному циклу и подумал, что onDestroy нужно вызывать до вызова onCreate при возобновлении? Это неправильное предположение?

Спасибо,

Стивен

Ответы [ 2 ]

0 голосов
/ 30 ноября 2011

Ответ от Pyrodante не является на 100% правильным с моей точки зрения (я не могу писать комментарии, поэтому я должен написать ответ):

OnDestroy() не вызывается в обоих отладчиках- и apk-варианты, если оба ваших списка верны.Это не имеет смысла: onDestroy() вызывается только тогда, когда активность уничтожена (достигнут конец ее жизни).Таким образом, onCreate() никогда не будет вызываться после onDestroy() одним и тем же объектом действия.

В случае, если процесс завершен для освобождения памяти: действие должно быть приостановлено (onPause()) или остановлено (onStop()), система убивает процесс, чтобы освободить память, и если действие требуется снова, вызывается onCreate().Так обстоит дело в вашем APK-варианте.

Смотрите следующее изображение.Иногда мне помогает взять карандаш и нарисовать в нем стрелки, как работает мое приложение: Android Lifecycle Methods

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

Чтобы ответить на этот вопрос, мне придется утвердить несколько предположений.1) Вы отслеживаете жизненные циклы по журналу, помещенному в события для вашей активности. 2) Ничего другого не изменилось в системе. 3) Отладчик помогает поддерживать активность при остановке.

Возможно, у вас нет индикаторадля вызова onDestroy ().onCreate () вызывается только при создании действия (в отличие от возобновления из остановленного состояния).

Как указано в допущениях, используемый отладчик, вероятно, заставляет систему поддерживать приложение в активном состоянии, пока он находится востановленное состояние.Когда вы загружаете его из APK, он не отлаживается, поэтому ничто не заставляет его оставаться в живых.После вызова onStop () система может закрыть приложение, чтобы очень быстро освободить память, вызвав onDestroy ().После того, как это произойдет, onCreate () придется вызывать снова (потому что он был уничтожен).

Вы, вероятно, уже читали это, но здесь вы идете: http://developer.android.com/reference/android/app/Activity.html

...