我正在構建一款Android應用程序,用於通過智能手機控制電源插座。該應用程序配備了Android Wear應用程序,用戶可以從手腕上直接控制燈光。當手機處於打盹模式時,佩戴動作執行非常緩慢或根本不執行
當用戶想要以控制光我發送經由MessageApi
字符串作用從智能手錶到智能電話,它接收在一WearableListenerService
這個動作和相應的網絡信號發送到電源插座/網關在AsyncTask
。
只要手機沒有閒置太久,這種方式就可以正常工作。但是,如果手機在桌面上停留時間過長,並且在Wear服務中打瞌睡,則執行速度非常緩慢,有時甚至根本不會。我想這是部分意圖的行爲,但在我的情況下,這是不實際的,因爲如果用戶想進入黑暗的房間,用戶無法等待很長一段時間才能打開燈。
我知道,如果您不在瞌睡白名單上,那麼瞌睡會徹底切斷除FCM/GCM之外的所有網絡。但是,即使我的應用程序位於此白名單上,並且網絡部分的工作操作可能需要很長時間才能在手機上執行。
所以我的具體問題是: 什麼是處理這種情況的推薦方式,可穿戴式設備的動作需要通過網絡在處於休眠模式的已連接智能手機上完成?
有沒有辦法退出打盹一段很短的時間,以更快地執行由可穿戴伴侶應用觸發的計算?
我知道AlarmManager
有一種即使在睡眠模式下也可以工作的新方法,但是這是否也會修復處理延遲?從MessagApi
收到MessageEvent
後發出警報似乎是對我的一種解決方法。
或者也許是一個AsyncTask
只是錯誤的方式來處理後臺網絡,那是延遲來自哪裏?
馬上要做消息API'onMessageReceived'事件火當手機處於打盹?或者這是什麼延遲? – String
現在我改變了我的網絡代碼,使用IntentService進行這種操作,似乎它改進了一些。 @String是的onMessageReceived不會立即觸發(幾乎)。瞌睡時我可以控制燈光。在我的代碼中,我決定在互聯網可用時使用WAN或LAN/WLAN。這個檢查(可用因特網)似乎需要相當長的一段時間,並且檢查失敗,即使我的應用程序在白名單上並且Internet應該可用。 –