使用httpclient和asynctask取消文件下载

6
在我的应用程序中,我需要从URL地址下载文件。我想在对话框中(或可选地在通知区域中)显示下载进度。我已经找到了一些关于这个主题的好资源(类似于http://progrnotes.blogspot.com/2010/09/c-android.html)。不幸的是,所有的例子都没有清楚地说明如何根据用户请求正确取消下载。所以我的问题实际上很简单:
给定一个异步任务,它使用httpclient在后台下载文件,并显示带有下载进度和取消按钮的对话框,当按下按钮时,如何取消下载并停止后台任务?
我知道杀死线程通常不是一个好主意,所以我可能需要在我的后台线程中使用一个“取消”变量。如何从按钮向异步任务传递停止信号?
问候, Ivo
3个回答

3

让您的按钮调用AsyncTask.cancel(true),然后从doInBackground(Params... params)内部检查isCancelled()。通过这种方式,您可以向后台线程传达下载应该被取消的信息,并采取适当的步骤停止它。


谢谢,听起来像是解决方案!(实际上我确实看到了参考中的取消选项,但我读到了关于此功能可靠性的投诉)。在我的线程中经常检查isCancelled()应该可以解决问题。 - Ivo
2
它只是调用了“OnCancelled”函数,但下载任务仍在运行,对吧?我想要一种停止下载任务的方法...怎么做呢? - neobie

3

在AsyncTask中放置一个catch (InterruptedException e)行表示InterruptedException永远不会被抛出。因此,这似乎不是一个可行的解决方案。 - Jarl
你的参考是什么,证明“这将通过正常中断处理中断你的线程”? - Jarl

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接