2014-02-25 33 views
1

我正在創建聯網的應用程序,它在一定的時間間隔後向服務器發送心跳。我的問題是當移動處於'睡眠模式'時,在一段時間的連接被泄露後(可能是因爲無線網絡關閉)。因此,應用無法發送心跳,它也會斷開連接。當Android移動睡眠時保持wifi連接

現在如何避免讓wifi關閉。

我曾嘗試之類的東西'WIFI_SLEEP_POLICY_NEVER'WifiManager.WIFI_MODE_FULL等等等等

但沒有什麼作品? 有沒有人解決過這個問題?如果有任何真實的例子,我會很棒。

預先感謝您

重新編輯:我已經使用 WiFi管理代碼。

WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE); 
Lock = wifiManager.createWifiLock(WifiManager.WIFI_MODE_FULL, "LockTag"); 
lock.acquire(); 
+1

您是否使用過WifiLock? – CommonsWare

+0

是的,它也沒有工作。我已經用wifilock代碼重新編輯問題以供參考。 – userx

+0

你可以嘗試拿着powermanager wakelock嗎?防止系統再次掛起。 – vishalm

回答

0

最近我試過,

int pol = android.provider.Settings.System.WIFI_SLEEP_POLICY_NEVER; 
       android.provider.Settings.System.putInt(cr, android.provider.Settings.System.WIFI_SLEEP_POLICY, pol); 

它工作正常,除了HTC手機。

這是否有任何理由?

1

[解決]

int pol = android.provider.Settings.System.WIFI_SLEEP_POLICY_NEVER; 
       android.provider.Settings.System.putInt(cr, android.provider.Settings.System.WIFI_SLEEP_POLICY, pol); 

我用電源管理器API與上述代碼&最後它解決了沿如下。

final PowerManager p = (PowerManager) getSystemService(Context.POWER_SERVICE); 
l = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "newTAG"); 
l.acquire(); 

&釋放這個鎖,我重寫的onDestroy()。 (注意:雖然不推薦使用onDestroy,但應該使用onPause() - 根據文檔)