取消android中的异步任务?

时间:2012-11-19 05:34:53

标签: android android-asynctask

我有一个Android应用程序使用asynctask发出httpget请求,现在请求正在进行中,如果我接到电话或互联网连接丢失,应用程序崩溃。 我认为使用广播接收器检查网络状态将是最好的。 任何人都可以提出正确的建议吗?

1 个答案:

答案 0 :(得分:0)

如果您的问题是应用崩溃,并且您不希望您的应用崩溃

然后在try catch内进行服务器通信。因此,如果任何意外故障或来电中断,您的应用程序将不会崩溃。

结果可能是以下任何一种,

接听来电时,

  1. 如果通讯已完成,则会在完成任务后向您显示结果。

  2. 如果服务器通信失败,那么应用程序将保持旧的状态或屏幕,在您调用asynctask之前。

  3. 如果您担心要处理此任务失败,

    然后你可以将你的捕获结果返回到onPostExecute()并在这些类型的失败之后做你想做的事。

    使用后台主题可能注册广播接收器并不是一个好主意。

    因为无论如何,如果出现这种情况,你不需要取消AsyncTask,它将被自动取消。

    另一个问题是,如果您注册一个接收器,只要您的应用程序处于活动状态并且即使您没有与Web服务器进行通信,也会发出来电。

    射击广播接收器会耗尽电池。

    如果需要注册接收器, 然后,以下链接将告诉您有关连接接收器的所有内容和示例代码,

    Detect Connection Changes receiver

    注意,在oncreate()中注册接收器并在onDestroy()中注销是轻量级的,而不是注册接收器。

    其他信息:

    如果您需要在某个时间取消asynctask,那么以下链接可能是有用的

    Ideal way to cancel an executing AsyncTask