2010-07-11 77 views
1

手机从睡眠模式中唤醒后,我遇到了移动互联网连接问题。有一个应用程序定期更新一些数据。 AlarmManager触发我的BroadcastReceiver开始serviceservice获取PARTIAL_WAKE_LOCK并发送一些http请求。不幸的是,当更新间隔相当大时(5h),service无法发送/下载任何东西。当我使用WIFI连接而不是移动时出现问题,并且WIFI sleep policy设置为never。更新时间间隔短(不到半小时)时,移动连接上一切正常。我也确定我的BroadcastReceiver收到5h事件,因为我已经检查过它。android dev:手机唤醒后移动互联网连接问题

应如何处理此类事件。我试着检查ConnectivityManager是否建立了连接,如果不是,则重试5次,但仍然出现相同的问题。

感谢您的任何回答预先

回答

0

Android系统接通无线网络的几分钟当该装置被悬浮(即屏幕关闭)。 当设备再次打开(通过获取唤醒锁)时,需要几秒钟的时间才能重新建立网络连接(对于3G数据连接也是如此,这些连接在设备休眠时也会被拆除) 。

我的建议:
- 等待ConnectivityManager广播网络重新启动。实践证明,收到广播后等待2-3秒有助于在开始发送和接收数据之前解决问题。
- 更容易一点:抓住唤醒锁后,等待更长的超时时间,然后尝试连接。

+0

我应该在哪里获得唤醒锁?在'AlarmReceiver'里面传递给'Service'还是直接在'service'中? – boro 2010-07-14 14:18:34

+0

AlarmReceiver更好 - 取决于如何将控制权交给服务(例如通过发送意图),系统可以再次进入休眠状态。 – adamk 2010-07-14 14:32:45

+0

“Intent”,我不知道其他方式。所以如果有意图,我应该如何将它传递给'service'。我已经阅读过Stack,通常它是由'service'中的静态变量完成的。它可以做得更好吗? – boro 2010-07-14 14:52:23