我有一个使用 asynctask 发出 httpget 请求的 android 应用程序,现在当请求正在进行时,如果我接到电话或互联网连接以某种方式丢失,应用程序崩溃。我认为使用广播接收器检查网络状态是最好的。谁能建议正确的做法?
问问题
949 次
1 回答
0
如果您的问题是应用程序崩溃,并且您不希望您的应用程序崩溃
然后在里面进行服务器通信try catch
。这样,如果出现任何意外故障或来电中断,您的应用程序就不会崩溃。
结果可能是以下任何一种,
在接听来电时,
如果通信完成,那么它将向您显示任务完成后您所期望的结果。
如果与服务器通信失败,则应用程序将保持您调用 asynctask 之前的旧状态或屏幕。
如果您担心处理此任务失败,
然后你可以返回你的捕获结果onPostExecute()
并在这些类型的失败之后做一些你想做的事情。
使用后台线程注册广播接收器可能不是一个好主意。
因为无论如何如果出现这种情况,你不需要取消AsyncTask,它会自动取消。
另一个问题是,如果您注册了一个接收器,那么只要您的应用程序处于活动状态并且有来电发生,即使您没有与 Web 服务器通信,它也会被触发。
发射广播接收器会耗尽电池电量。
如果还需要注册一个接收器,那么下面的链接会告诉你关于连接接收器的一切和示例代码,
请注意,在 oncreate() 中注册接收器并在 onDestroy() 中取消注册比在 .
附加信息:
如果您需要在某个时候取消异步任务,那么以下链接可能会很有用
于 2012-11-19T06:58:52.220 回答