请告诉我写这篇文章的最佳方式。
我需要一个通用的AsyncTask进行webservice调用,并且所有可能的错误处理都是如此。还有一个用于更新UI /显示错误消息的回调。
我找到了一些approches:
答案 0 :(得分:2)
这实际上很容易使用AsyncTask
。
AsyncTask
有4个功能。其中3个在UI线程上运行,因此您可以根据需要更新UI。其中一个函数在后台运行,因此您可以根据需要执行所需的操作,例如调用您的Web服务。
您不需要正式的回调函数。 AsyncTask.onPostExecute()
为您处理此事。
有一个很棒的example in the Android documentation显示了如何下载文件,就像您尝试使用webservices连接一样。您将extend AsyncTask
并创建自己的DownloadFilesTask
,就像示例中一样。
整个过程只需一行代码即可:
new DownloadFilesTask().execute(...)
这四个功能是:
ProgressBar
或其他内容
UI元素。publishProgress()
喜欢。这将在内部调用onProgressUpdate()
如果需要,可以逐步更新用户界面或ProgressBar
。ProgressBar
。仅响应调用而调用此函数
来自publishProgress()
的{{1}}。doInBackground()
您的dismiss()
,更新
用户界面,处理ProgressBar
中保存的所有错误,然后跳转到
代码的下一部分。错误处理:
所有错误都被doInBackground()
所困。您应该在doInBackground()
班级中保存int errorCode
和/或String errorMessage
,并在发生错误时从DownloadFilesTask
保存return;
。然后,处理并报告doInBackground()
中的错误。
答案 1 :(得分:0)
有关几个答案,请参阅this question。它们都涉及将doInBackground
引发的任何异常存储在字段中并在onPostExecute
中进行检查。我喜欢@dongshengcn发布的this answer,它将此封装到AsyncTask
的子类中,然后您可以根据需要覆盖onResult
和/或onException
。