首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用 AsyncTask 一一下载多个文件?

使用 AsyncTask 下载多个文件时,可以通过创建多个 AsyncTask 实例来实现。每个实例负责下载一个文件。以下是一个简单的示例:

代码语言:java
复制
import android.os.AsyncTask;
import android.util.Log;
import java.io.BufferedInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;

public class DownloadTask extends AsyncTask<String, Integer, String> {

    private static final String TAG = "DownloadTask";

    @Override
    protected String doInBackground(String... urls) {
        int count = urls.length;
        for (int i = 0; i< count; i++) {
            String url = urls[i];
            String fileName = url.substring(url.lastIndexOf("/") + 1);
            try {
                downloadFile(url, fileName);
            } catch (Exception e) {
                Log.e(TAG, "Error: " + e.getMessage(), e);
            }
        }
        return null;
    }

    private void downloadFile(String urlStr, String fileName) throws Exception {
        InputStream input = null;
        OutputStream output = null;
        try {
            URL url = new URL(urlStr);
            input = new BufferedInputStream(url.openStream());
            output = new FileOutputStream(fileName);

            byte data[] = new byte[1024];
            int count;
            while ((count = input.read(data)) != -1) {
                output.write(data, 0, count);
            }
        } finally {
            if (input != null) {
                input.close();
            }
            if (output != null) {
                output.close();
            }
        }
    }
}

在需要下载文件的地方,可以创建 DownloadTask 实例并调用 execute 方法:

代码语言:java
复制
String[] urls = {"http://example.com/file1.zip", "http://example.com/file2.zip"};
new DownloadTask().execute(urls);

这个示例中,我们创建了一个名为 DownloadTask 的 AsyncTask 子类,并在 doInBackground 方法中遍历传入的 URL 列表,下载每个文件。downloadFile 方法负责实际下载文件。

请注意,这个示例仅用于演示,实际应用中可能需要更多的错误处理和进度更新等功能。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券