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



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

你能给我一个什么时候使用的概念吗?

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它可以让您取消下载,并且还会在广播完成后通知您。如果需要,您甚至可以查询进度。

请在此处查看文档。

(1)如果您只需要下载它并将其保存到SD卡而没有其他事情可做,或者如果它是一个非常大的视频文件使用并且不需要与UI线程频繁交互 意图服务

(2)如果是很小的视频文件,请使用异步任务。

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

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

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

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

这取决于

您的需要,例如
异步
1. 任务用于在单击按钮时运行。
2.异步任务一次性使用。
服务业
1.如果您想从服务器连续下载,则可以使用服务,例如每当服务器中有新内容时下载图像。
2. 服务在后台连续执行。

如果每次单击或其他事件必须完成一次任务,则使用异步任务会更快。

最新更新