我有一个BOOT_COMPLETED意图的Receiver,它将通过调用带有intent的startService和通过生成向服务器发送HTTP post的线程调用onStartCommand函数的Service进程来启动Service。
上电时,有时需要3到5秒才能在手机上获得活动数据连接,当发生这种情况时,由于没有数据连接,服务无法进行HTTP发布。接收方是否可以使用startService将意图发送到服务并延迟。这样当调用onStartCommand of Service时,数据连接已准备好发布数据。
答案 0 :(得分:0)
你不能使用asynctask来执行HTTP请求,然后在asynctask中捕获异常以检查超时异常吗?
如果asynctask超时然后优雅地返回并使你的服务产生一个新的asynctask直到你得到一个连接?
答案 1 :(得分:0)
在进行任何数据通信之前,请创建一个循环,该循环将以指数退避方式轮询Android的TelephonyManager。getDataState(),以免耗尽太多CPU或浪费用户的电池。继续尝试,直到你得到DATA_CONNECTED标志,或直到你达到某种超时状态才能停止尝试。