Android: как узнать, когда приложение входит или в «фоновый» режим? - PullRequest
10 голосов
/ 20 июля 2010

Я пытаюсь добиться следующего с Android:

  • , когда приложение находится в фоновом режиме, поток время от времени опрашивает сервер для получения данных и уведомляет пользователя, если новыйданные доступны.Я использую Сервис для этого, хорошо.

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

Я не понимаю, как обнаружить переход между «активным» или «фоновым» использованием приложения.Методы действия onResume (), похоже, не помогают, так как в любом случае действие может быть скрыто или видимым во время «активного» использования.Насколько я понимаю, само приложение не имеет значения между двумя состояниями.
Может ли оно быть связано, когда нажата кнопка HOME?Есть ли другой способ провести различие?
Я имею в виду эквивалент метода делегата приложения iPhone applicationDidEnterBackground.Это правильный способ думать с Android?Или мне использовать другой подход?

Спасибо.

1 Ответ

3 голосов
/ 20 июля 2010

Я собираюсь сослаться на Activity Жизненный цикл .Между onResume и onPause ваш Activity является «активным», т. Е. Он находится на экране, и пользователь может взаимодействовать с ним.Если вызывается метод onPause вашей активности, вам следует предположить, что он больше не является "активным", и пользователь больше не сможет взаимодействовать с ним, пока не будет вызван onResume.Если вы хотите отслеживать это в своем сервисе, вам придется сделать это вручную.

Вероятно, этого легче всего достичь, вызвав метод в вашем сервисе в Activity#onResume, который увеличивает счетчик или устанавливает флаг, а в onPause отменяет это изменение.Если у вас есть несколько действий, вам, скорее всего, понадобится счетчик, вероятно, AtomicInteger, и используйте его, чтобы определить, когда вам следует возобновить опрос.

Возможно, я бы немного подождал, когда счетчик достигнет 0, перепроверьте его, и если он все еще равен 0, возобновите опрос.Это будет учитывать разрыв между onPause одного вида деятельности и onResume.

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