Rat*_*ish 2 android android-asynctask intentservice android-download-manager
一个.下载经理Api b.意图服务c.的AsyncTask
请告诉我哪个是最佳做法.是否可以使用上述条款取消正在进行的下载,如果是,请提供我的摘要.
答:下载经理:
下载管理器是一种处理长时间运行的HTTP下载的系统服务.客户端可以请求将URI下载到特定目标文件.下载管理器将在后台进行下载,负责HTTP交互并在出现故障或连接更改和系统重新启动后重试下载.
因此,如果您不想解决HTTP连接错误处理问题,并且只想传递文件的源和目标,请使用DownloadManager.
您可以通过调用其remove(long...)方法通过DownloadManager取消下载.为此,您需要下载的ID
B:IntentService
IntentService是服务的基类,可根据需要处理异步请求(表示为Intents).客户端通过startService(Intent)呼叫发送请求; 根据需要启动服务,使用工作线程依次处理每个Intent,并在工作失败时自行停止.
这种"工作队列处理器"模式通常用于从应用程序的主线程卸载任务.主要用于创建队列.
所有请求都在一个工作线程上处理 - 它们可能需要多长时间(并且不会阻止应用程序的主循环),但一次只能处理一个请求.
您可以绑定到intentservice并创建一个取消或取消下载队列的方法.
C:AsyncTasks
AsyncTasks专为无法运行UI线程的一次性耗时任务而设计.一个常见的例子是在按下按钮时获取/处理数据.因此,长时间运行下载不是一个更好的解决方
您也可以使用AsyncTask取消下载.为此你需要去cancel()asynctask 的方法.并且在您正在读取响应流的循环中,使用某个标志继续检查asynctask的cancel方法是否被调用.如果调用cancel方法,则停止下载,然后继续.
我希望你通过这个答案找到最好的方法.
| 归档时间: |
|
| 查看次数: |
2711 次 |
| 最近记录: |