在Android中下载一个文件或多个文件的最佳实践是什么。。。?
a。下载管理器Api B意向服务 C异步任务在Android中下载一个文件或多个文件的最佳实践是什么。。。?,android,android-asynctask,intentservice,android-download-manager,Android,Android Asynctask,Intentservice,Android Download Manager,a。下载管理器Api B意向服务 C异步任务 请让我知道哪种做法是最好的。是否可以使用上述条款取消正在进行的下载,如果可以,请提供代码片段 下载管理器: 下载管理器是一种处理长期运行的HTTP下载的系统服务。客户端可以请求将URI下载到特定的目标文件。下载管理器将在后台进行下载,负责HTTP交互,并在出现故障或连接更改和系统重新启动后重试下载 所以,若您不想处理HTTP连接错误,只想传递文件的源和目标,那个么就使用DownloadManager 您可以通过DownloadManager调用其re
请让我知道哪种做法是最好的。是否可以使用上述条款取消正在进行的下载,如果可以,请提供代码片段 下载管理器: 下载管理器是一种处理长期运行的HTTP下载的系统服务。客户端可以请求将URI下载到特定的目标文件。下载管理器将在后台进行下载,负责HTTP交互,并在出现故障或连接更改和系统重新启动后重试下载 所以,若您不想处理HTTP连接错误,只想传递文件的源和目标,那个么就使用DownloadManager 您可以通过DownloadManager调用其
remove(long…)
方法取消下载。为此,您需要下载的ID
B:IntentService
IntentService是按需处理异步请求(表示为Intent)的服务的基类。客户端通过startService(Intent)
调用发送请求;该服务根据需要启动,使用工作线程依次处理每个意图,并在工作结束时自行停止
这种“工作队列处理器”模式通常用于从应用程序的主线程卸载任务,因此主要用于创建队列
所有请求都在一个工作线程上处理——它们可能需要花费必要的时间(并且不会阻塞应用程序的主循环),但一次只处理一个请求
您可以绑定到intentservice并创建一个方法来取消下载或取消下载队列
C:AsyncTasks
AsyncTasks设计用于一次性耗时的任务,这些任务无法在UI线程中运行。一个常见的例子是按下按钮时获取/处理数据。因此,对于长时间运行的下载来说,这不是一个更好的解决方案
您也可以使用AsyncTask取消下载。为此,您需要使用asynctask的cancel()
方法。在读取响应流的循环中,使用一些标志检查是否调用了asynctask的cancel方法。如果调用了cancel方法,则停止下载,否则继续
我希望你能从这个答案中找到最好的答案。+1的答案,即使问题与通常拒绝此类问题的SO政策不匹配“什么是最好的……好吧。。我明白了。使用下载管理器可以进行多次下载。所以,您可以为我提供一些使用下载管理器api取消下载的示例片段。提前感谢……)上传@HardikTrivedi怎么样