2011-02-27 117 views
0

我搜索,無法找到這個問題的答案。我正在研究可以一直運行的應用程序。我正在使用wifi,一切正常,直到設備睡覺。一臺設備發出組播數據包,另一臺設備應該得到它們並喚醒,但事實並非如此。現在,網絡線程從我的主類中的StartService()開始的服務線程開始。在服務中,我得到了一個wifi鎖和一個wifi多播鎖,這樣wifi和多播「應該」在設備睡眠時保持不變。我也嘗試添加一個部分喚醒鎖,但仍然沒有任何效果。有任何想法嗎?我現在正在開發運行android 2.3.3的兩個nexus。允許wifi數據,同時睡眠和喚醒設備

回答

1

您需要在WakeLock中設置PowerManager.ACQUIRE_CAUSES_WAKEUP標誌,但PowerManager.ACQUIRE_CAUSES_WAKEUP標誌不適用於PowerManager.PARTIAL_WAKE_LOCK,但它應該與PowerManager.SCREEN_DIM_WAKE_LOCK配合使​​用。 當您調用WakeLock上的acquire()時,下面的代碼應能喚醒設備的顯示和CPU。 5秒鐘的睡眠應該讓你有足夠的時間喚醒WiFi。

WakeLock lock = ((PowerManager) getSystemService(POWER_SERVICE)).newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK 
        | PowerManager.ACQUIRE_CAUSES_WAKEUP, "TAG"); 
lock.acquire(); 
try { 
    Thread.sleep(5000); 
} catch (InterruptedException e) {     
} 
// do work here.. 
lock.release()