我有一个Android应用程序使用asynctask发出httpget请求,现在请求正在进行中,如果我接到电话或互联网连接丢失,应用程序崩溃。 我认为使用广播接收器检查网络状态将是最好的。 任何人都可以提出正确的建议吗?
答案 0 :(得分:0)
如果您的问题是应用崩溃,并且您不希望您的应用崩溃
然后在try catch
内进行服务器通信。因此,如果任何意外故障或来电中断,您的应用程序将不会崩溃。
结果可能是以下任何一种,
接听来电时,
如果通讯已完成,则会在完成任务后向您显示结果。
如果服务器通信失败,那么应用程序将保持旧的状态或屏幕,在您调用asynctask之前。
如果您担心要处理此任务失败,
然后你可以将你的捕获结果返回到onPostExecute()
并在这些类型的失败之后做你想做的事。
使用后台主题可能注册广播接收器并不是一个好主意。
因为无论如何,如果出现这种情况,你不需要取消AsyncTask,它将被自动取消。
另一个问题是,如果您注册一个接收器,只要您的应用程序处于活动状态并且即使您没有与Web服务器进行通信,也会发出来电。
射击广播接收器会耗尽电池。
如果需要注册接收器, 然后,以下链接将告诉您有关连接接收器的所有内容和示例代码,
Detect Connection Changes receiver
注意,在oncreate()中注册接收器并在onDestroy()中注销是轻量级的,而不是注册接收器。
其他信息:
如果您需要在某个时间取消asynctask,那么以下链接可能是有用的