2

我有一个使用 asynctask 发出 httpget 请求的 android 应用程序,现在当请求正在进行时,如果我接到电话或互联网连接以某种方式丢失,应用程序崩溃。我认为使用广播接收器检查网络状态是最好的。谁能建议正确的做法?

4

1 回答 1

0

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

然后在里面进行服务器通信try catch。这样,如果出现任何意外故障或来电中断,您的应用程序就不会崩溃。

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

在接听来电时,

  1. 如果通信完成,那么它将向您显示任务完成后您所期望的结果。

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

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

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

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

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

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

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

如果还需要注册一个接收器,那么下面的链接会告诉你关于连接接收器的一切和示例代码,

检测连接更改接收器

请注意,在 oncreate() 中注册接收器并在 onDestroy() 中取消注册比在 .

附加信息:

如果您需要在某个时候取消异步任务,那么以下链接可能会很有用

取消正在执行的 AsyncTask 的理想方法

于 2012-11-19T06:58:52.220 回答