2010-08-18 94 views
1

我有BOOT_COMPLETED意图接收器服务,它会通过调用startService,意图和服务流程,意图在onStartCommand功能通过产生一个线程,做一个HTTP后开始服务一台服务器。从接收器发送的意图与延迟

上电时,有时需要3〜5秒,得到手机的活动数据连接,当发生这种情况服务无法做HTTP后,因为没有数据连接。接收方是否有可能使用startService将服务意图发送到服务。以便当调用Service的onStartCommand时数据连接已准备好发布数据。

回答

0

难道你不能使用一个asynctask做HTTP请求,然后也许在异步存储中捕获一个异常来检查超时异常吗?

如果asynctask超时然后优雅地返回,并让你的服务产生一个新的asynctask,直到你获得连接?

+0

这很可能是因为HTTP POST会在启动失败时想延迟发布而不是捕获异常。 – 2010-08-18 13:18:52

+0

修复旧版代码,目前无法使用asyctask。 – 2010-08-18 13:22:01

+0

类似于下面的注释,产生一个工作线程轮询TelephonyManager,然后在DATA_CONNECTED标志返回true时回发给处理程序。这样你就不会阻塞主服务线程。 – BeRecursive 2010-08-18 14:28:18

0

在进行任何数据通信之前,先制作一个循环,用于轮询Android的TelephonyManager。带指数回退的getDataState()不会占用太多的CPU或浪费用户的电池。继续尝试,直到得到DATA_CONNECTED标志,或者直到您达到某种超时才停止尝试。