设备处于睡眠模式时,后台服务出现问题。我设置了一个警报,该警报将在每天早上9点启动服务。当设备处于唤醒状态时,此服务可以正常运行,但是当设备处于睡眠状态时,该服务将失败。

我已将问题追溯到如下所示的URLConnection.openConnection()调用。设备在睡眠模式下似乎无法打开此连接,它将引发IOException。我已经使用URL.openStream()在设备处于睡眠状态时执行网络调用,并且它们可以正常工作。

谁能解释为什么openStream()可以在睡眠模式下工作,而openConnection()不能呢?有没有办法让它工作?

这可以在睡眠模式下工作:

返回new BufferedReader(new InputStreamReader(new URL(url).openStream())8192);

这似乎在睡眠模式下不起作用:

URL actualURL = new URL(url.toString());
URLConnection c = actualURL.openConnection();
c.setConnectTimeout(10000);
c.setReadTimeout(20000);
InputStreamReader inputStreamReader = new InputStreamReader(c.getInputStream());
bufferedReader = new BufferedReader(inputStreamReader);

最佳答案

URLConnection代码从后台线程移至该服务可解决此问题,它现在可以在睡眠模式下使用。在睡眠模式下,线程日志正在工作,但openConnection()却没有。

07-24 09:27