我正在构建一款Android应用程序,用于通过智能手机控制电源插座。该应用程序配备了Android Wear应用程序,用户可以从手腕上直接控制灯光。当手机处于打盹模式时,佩戴动作执行非常缓慢或根本不执行
当用户想要以控制光我发送经由MessageApi
字符串作用从智能手表到智能电话,它接收在一WearableListenerService
这个动作和相应的网络信号发送到电源插座/网关在AsyncTask
。
只要手机没有闲置太久,这种方式就可以正常工作。但是,如果手机在桌面上停留时间过长,并且在Wear服务中打瞌睡,则执行速度非常缓慢,有时甚至根本不会。我想这是部分意图的行为,但在我的情况下,这是不实际的,因为如果用户想进入黑暗的房间,用户无法等待很长一段时间才能打开灯。
我知道,如果您不在瞌睡白名单上,那么瞌睡会彻底切断除FCM/GCM之外的所有网络。但是,即使我的应用程序位于此白名单上,并且网络部分的工作操作可能需要很长时间才能在手机上执行。
所以我的具体问题是: 什么是处理这种情况的推荐方式,可穿戴式设备的动作需要通过网络在处于休眠模式的已连接智能手机上完成?
有没有办法退出打盹一段很短的时间,以更快地执行由可穿戴伴侣应用触发的计算?
我知道AlarmManager
有一种即使在睡眠模式下也可以工作的新方法,但是这是否也会修复处理延迟?从MessagApi
收到MessageEvent
后发出警报似乎是对我的一种解决方法。
或者也许是一个AsyncTask
只是错误的方式来处理后台网络,那是延迟来自哪里?
马上要做消息API'onMessageReceived'事件火当手机处于打盹?或者这是什么延迟? – String
现在我改变了我的网络代码,使用IntentService进行这种操作,似乎它改进了一些。 @String是的onMessageReceived不会立即触发(几乎)。瞌睡时我可以控制灯光。在我的代码中,我决定在互联网可用时使用WAN或LAN/WLAN。这个检查(可用因特网)似乎需要相当长的一段时间,并且检查失败,即使我的应用程序在白名单上并且Internet应该可用。 –