这是在Android中下载文件或多个文件的最佳做法...?

Rat*_*ish 2 android android-asynctask intentservice android-download-manager

一个.下载经理Api b.意图服务c.的AsyncTask

请告诉我哪个是最佳做法.是否可以使用上述条款取消正在进行的下载,如果是,请提供我的摘要.

Har*_*edi 9

答:下载经理:

下载管理器是一种处理长时间运行的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方法,则停止下载,然后继续.

我希望你通过这个答案找到最好的方法.