我想从我的服务器下载视频(mpeg),需要将其保存在SD卡上。是否可以使用AsyncTask
或Service
?
你能给我一个何时使用哪个概念?
答案 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。服务在后台持续执行。
如果每次点击或其他事件都需要完成一次任务,则使用异步任务会更快。