使用AsyncTask或Service从服务器下载视频

时间:2016-02-05 09:20:49

标签: android downloading

我想从我的服务器下载视频(mpeg),需要将其保存在SD卡上。是否可以使用AsyncTaskService

你能给我一个何时使用哪个概念?

4 个答案:

答案 0 :(得分:2)

Android提供了一个DownloadManager类,可以轻松处理后台下载。

dm = (DownloadManager) context.getSystemService(DOWNLOAD_SERVICE);
final DownloadManager.Request request = new DownloadManager.Request(Uri.parse(uri))
        .setDestinationInExternalFilesDir(getContext(), "downloads", "myVideo.avi");
int downloadId = dm.enqueue(request);

通过保留downloadId,您可以取消下载,并在完成广播后通知您。如果需要,您甚至可以查询进度。

查看文档here

答案 1 :(得分:1)

(1)如果您只需下载它并将其保存到SD卡并且没有其他任何关系,或者它是一个非常大的视频文件使用,并且不需要经常与UI线程Intent Service交互< / p>

(2)如果它是一个非常小的视频文件,请使用异步任务。

(3)否则如果不是太大则使用正常服务

答案 2 :(得分:1)

这实际上取决于你的需要。

如果您的下载需要在成功下载后更新任何UI / UX内容,请继续使用AsyncTask。

如果不是这种情况,请通过在其中启动单独的Thread进程来使用Service类,或者也可以使用IntentService。

答案 3 :(得分:0)

这取决于你的需要
异步
  1.任务用于在点击按钮时运行   2.一次性使用的异步任务。
服务
  1.如果要在服务器中有新内容时从服务器连续下载(如下载映像),则可以使用服务。   
2。服务在后台持续执行。

如果每次点击或其他事件都需要完成一次任务,则使用异步任务会更快。