Android: жизненный цикл приложения

Я хочу выделить следующие варианты использования:

Случай 1. Пользователь остается в одном и том же приложении и выполняет разные действия в одном приложении.

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

В случае № 2 я хочу обновить некоторые данные при повторном вызове моей основной деятельности, где в случае № 1 это не нужно. Методы жизненного цикла onResume() и onStart() вызываются в обоих случаях, поэтому просто поместить туда мой код невозможно. Что я могу сделать? Спасибо.


person AndyAndroid    schedule 17.09.2013    source источник
comment
Даже если пользователь остается в том же приложении, действия могут быть уничтожены, как вы можете прочитать здесь: developer.android.com/reference/android/app/Activity.html (смотрите в этой таблице описание в конце). Таким образом, я бы сосредоточился исключительно на правильной реализации методов on... , и у вас все должно быть в порядке.   -  person clearwater    schedule 18.09.2013
comment
Согласно вашему алгоритму, пребывание в вашем приложении (но фактически не использование его) в течение двух часов означает, что вам не нужно обновлять свои данные, но получение входящего звонка с неправильного номера и возврат к вашему приложению через две секунды делают это. Я бы порекомендовал вам придумать лучший алгоритм.   -  person CommonsWare    schedule 18.09.2013


Ответы (2)


Вам придется писать в общий параметр всякий раз, когда вы запускаете команду навигации, которая выведет вас из вашего приложения и проверит этот общий параметр при загрузке вашего основного действия. Чтобы обработать случай кнопки «Назад», вы можете переопределить onBackPressed() в своих действиях, а для обработки нажатия кнопки «Домой» вы можете проверить это сообщение в блоге: http://nisha113a5.blogspot.com/. Если вы хотите управлять переключателем последних приложений, вы можете сделать что-то похожее на метод кнопки «Домой».

person dcow    schedule 17.09.2013

Вы можете использовать события жизненного цикла, чтобы определить, когда вы выходите из приложения или входите в него. Вот правила, которые я нашел для работы:

  • Когда пользователь входит, всегда вызывается onResume (на активность, которая будет текущей)
  • Когда пользователь уходит, всегда вызывается onStop (для текущей активности)*
  • Когда пользователь перемещается между действиями, onResume всегда вызывается для нового действия, а onStop всегда вызывается для старого. Вызов onResume всегда предшествует onStop

*за исключением случаев, когда вы нажимаете кнопку питания (для выключения), когда вы можете видеть только вызов onPause.

Подробнее здесь: http://www.artificialworlds.net/blog/2015/06/05/detecting-whether-an-android-app-is-stopping-or-starting/

person Andy Balaam    schedule 17.06.2015