使用 AsyncTask 下载多个文件时,可以通过创建多个 AsyncTask 实例来实现。每个实例负责下载一个文件。以下是一个简单的示例:
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 方法:
String[] urls = {"http://example.com/file1.zip", "http://example.com/file2.zip"};
new DownloadTask().execute(urls);
这个示例中,我们创建了一个名为 DownloadTask 的 AsyncTask 子类,并在 doInBackground 方法中遍历传入的 URL 列表,下载每个文件。downloadFile 方法负责实际下载文件。
请注意,这个示例仅用于演示,实际应用中可能需要更多的错误处理和进度更新等功能。
领取专属 10元无门槛券
手把手带您无忧上云