2011-04-11 79 views
5

我正在編寫一個Android客戶端應用程序,它使用HTTP長輪詢(Comet)不斷接收來自服務器的推送通知。什麼事件可以喚醒睡眠中的Android設備?

我不想永遠保持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   
    .... 

但有收到通知,並要求激活鎖定之間的一個小的時間窗口,所以我的問題是,如何長時間的設備保持這種清醒狀態?在這段時間內,設備是否可以恢復睡眠?

回答

0

該設備將被喚醒的時間足夠長,以在BroadcastReceiver中執行一些短代碼。我一直無法找到毫米的確切數量,但是想法是,在您的接收器中,您應該抓取任何需要進行自己的處理的WakeLock

但是,WakeLock的確切管理可能會非常棘手。我建議使用@ CommonsWare的WakefulIntentService