Какие события могут разбудить спящее Android-устройство? - PullRequest
5 голосов
/ 11 апреля 2011

Я пишу клиентское приложение для Android, которое продолжает получать push-уведомления с сервера с использованием длинного опроса HTTP (Comet).

Я не хочу всегда сохранять WakeLock, поскольку он разряжает батарею, но яНеобходимо убедиться, что устройство может получать уведомления, даже когда оно находится в спящем режиме.

И я нашел этот вопрос:

Android: этапы / уровни сна на устройстве Android?

, где "CommonsWare" упомянул, что входящий пакетв разъеме без Wi-Fi устройство будет активировано.

Итак, мое решение выглядит следующим образом:

    Client ------------------------- Server
              ---- Request----->
    release WakeLock                 (Allow device to sleep)





              <----Notification--    (Hopes it can wake up the device)
    require WakeLock
    process the notification  
              ---- Request----->
    release WakeLock          
    ....

Но между получением уведомления и запросом wakelock существует небольшое временное окно,поэтому мой вопрос, как долго устройство будет оставаться в активном состоянии?Возможно ли, чтобы устройство вернулось в спящий режим в течение этого временного окна?

1 Ответ

0 голосов
/ 13 марта 2013

Устройство будет бодрствовать достаточно долго, чтобы выполнить некоторый короткий код в BroadcastReceiver.Я не смог найти точное количество миллис, но идея в том, что в вашем приемнике вы должны взять все, что вам нужно WakeLock, чтобы продолжить собственную обработку.1005 * может быть сложно.Я рекомендую использовать @ CommonsWare WakefulIntentService:

...