2017-08-05 69 views
0

我打電話給一個來自Service類的Web服務HTTPS連接,每隔1分鐘由警報管理器調用。當我啓動服務時,它工作正常,我從Web服務獲取響應,直到設備進入睡眠模式。當設備的屏幕獲取關閉,下一個Web服務調用我得到這個錯誤 -爲什麼我在設備的睡眠模式下得到SoketTimeOutException?

com.turbomanage.httpclient.HttpRequestException: java.net.SocketTimeoutException: connect timed out 

它會繼續下去,直到我喚醒device.When設備得到喚醒Web服務開始得到來自服務器的響應拋出此異常,我沒有得到例外然後。所以請任何人告訴我可能是什麼問題。測試設備是Nexsus 5X

回答

1

我打電話從服務類中的Web服務的HTTPS連接是通過報警經理每隔1分鐘

這不會在Android 6.0+工作,除非你的應用程序是在電池優化稱爲白名單。打盹模式將停止大部分警報,並且在您獲得控制權的情況下,您可能無法訪問互聯網。另外,請記住,每分鐘喚醒設備並執行網絡I/O將耗盡電池,這就是爲什麼Android 6.0首先引入打盹模式的原因。

+0

那麼解決方案是什麼呢? – shyam002

+0

@ shyam002:我不知道問題是什麼。由於各種原因(例如飛機模式),無法保證您在任何時間點都能連接到互聯網。您應該像處理其他缺乏連接一樣處理此問題。 – CommonsWare

+0

@ shyam002:如果您希望最大限度地提高在Android 6.0+上以睡眠模式連接互聯網的機會,請要求用戶將您的應用添加到電池優化白名單。在運行Android 7.1.1的Nexus 5X上,即設置>應用程序>(齒輪圖標)>特殊訪問>電池優化。但是,您需要認識到用戶可能不會這樣做,或者如果他們不喜歡您的應用使用多少電池,他們可能會改變主意並將您的應用從此列表中刪除。 – CommonsWare

相關問題