设备处于睡眠模式时不工作的URLConnection

时间:2011-10-07 17:22:28

标签: java android

当设备处于睡眠模式时,我遇到后台服务问题。我已设置闹钟,每天早上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);

1 个答案:

答案 0 :(得分:0)

URLConnection代码从后台线程移动到服务修复了问题,现在它在睡眠模式下工作。日志记录在休眠模式下处于线程状态,但不是openConnection()