当设备处于睡眠模式时,我遇到后台服务问题。我已设置闹钟,每天早上9点开始服务。设备处于唤醒状态时此服务正常,但设备处于睡眠状态时会失败。
我已将问题跟踪到下面显示的URLConnection.openConnection()调用。在睡眠模式下,设备似乎无法打开此连接,它会抛出IOException。 我已经使用URL.openStream()在设备处于睡眠状态时执行网络调用,并且它们正常工作。
任何人都可以解释为什么openStream()会在睡眠模式下工作但openConnection()却没有?有没有办法让它发挥作用?
这适用于睡眠模式:
返回新的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);
答案 0 :(得分:0)
将URLConnection
代码从后台线程移动到服务修复了问题,现在它在睡眠模式下工作。日志记录在休眠模式下处于线程状态,但不是openConnection()
。