哪些事件可以唤醒沉睡的Android设备?

时间:2011-04-11 03:47:19

标签: android sockets wakelock android-wake-lock

我正在编写一个Android客户端应用程序,它使用HTTP长轮询(Comet)继续从服务器接收推送通知。

我不想总是保留WakeLock,因为它会耗尽电池,但我需要确保设备即使在睡眠模式下也能收到通知。

我发现了这个问题:

Android: Sleep stages/levels on an Android device?

其中“CommonsWare”提到非Wifi套接字上的传入数据包将唤醒设备。

所以我的解决方案如下:

    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          
    ....

但是在收到通知和要求唤醒锁之间有一点时间窗口,所以我的问题是,设备会保持这种清醒状态多长时间?设备是否可以在此时间窗口内恢复睡眠状态?

1 个答案:

答案 0 :(得分:0)

设备将唤醒足够长的时间以执行BroadcastReceiver中的一些短代码。我无法找到确切的毫秒数,但我们的想法是,在您的接收器中,您应该抓住所需的WakeLock以继续进行自己的处理。

然而,对WakeLock的精确管理可能会非常棘手。我建议使用@ CommonsWare的WakefulIntentService