2017-08-05 96 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