2010-06-14 52 views
5

我正在開發一個應用程序,其中我需要TCP連接以保持活動狀態。我已經實現了一種ping/pong系統來執行此操作。當屏幕開啓時,它可以很好地工作,但是一旦電話開啓,一段時間後就會停止響應ping。我創建了一個無線網絡喚醒鎖,但我仍然遇到還是同樣的問題..喚醒鎖似乎不起作用

這是我的代碼:

private static WifiManager wm = getSystemService(this.WIFI_SERVICE); 
private static WifiLock wl = null; 

public static void lock(){ 
    wl = wm.createWifiLock(WifiManager.WIFI_MODE_FULL , App.TAG); 
    if(!wl.isHeld()){ 
     wl.acquire(); 
    } 
} 

public static void unlock(){ 
    if(wl != null){ 
     if(wl.isHeld()){ 
      wl.release(); 
     } 
    } 
} 

任何想法?

+0

你是否在WakeLock對象上調用'acquire()'方法? – 2010-06-14 13:34:25

+0

什麼是wi-fi喚醒鎖?你的意思是屏幕鎖定? – 2010-06-14 15:13:37

+0

我已經用我的代碼 – shuwo 2010-06-14 15:36:18

回答

2

您必須使用SCREEN_DIM_WAKE_LOCK/PARTIAL_WAKE_LOCK標誌從here獲取PowerLock。

+0

更新了這個問題,所以當屏幕完全關閉時無法保持Wi-Fi開啓狀態? – shuwo 2010-06-15 12:26:25

+1

不,這是可能的。 WiFi鎖可以幫助您避免連接丟失。你也可以使用PARTIAL_WAKE_LOCK。我認爲問題在於你沒有獲得CPU鎖,所以你的代碼沒有執行。 – 2010-06-15 12:53:07