これは少し抽象的な質問ですが、誰かが私のために持っているかもしれない簡単な提案や答えがあるかどうか疑問に思っていました.
いくつかのテキスト ファイルをダウンロードするためのループを含む AsyncTask があります。ファイルは小さく、約 12 個あります。現在、ダウンロードに最大 10 秒かかっていますが、思ったよりも長いです。ダウンロードを高速化するためにできることはありますか、またはそれらを 1 つではなく同時にダウンロードする方法はありますか一つ?
非同期とダウンロード用のコードをここに示します。
@Override
protected Long doInBackground(URL... params) {
try {
// Loop to download
distance dis = new distance();
URL[] urlArray = dis.urlArray();
URL[] urlExtra = dis.urlArrayExtra();
String [] stationName = dis.getStationName();
String [] stationNameExtra = dis.getStationNameExtra();
for (int i = 0; i < urlArray.length; i++) {
String fileName = stationName[i];
File file = new File(sdCard.getAbsolutePath() +
"/Download/" + fileName);
URL url = urlArray[i];
/* Open a connection to that URL. */
URLConnection ucon = url.openConnection();
/*
* Define InputStreams to read from the URLConnection.
*/
InputStream is = ucon.getInputStream();
BufferedInputStream bis = new BufferedInputStream(is);
/*
* Read bytes to the Buffer until there is nothing more to read(-1).
*/
ByteArrayBuffer baf = new ByteArrayBuffer(50);
int current = 0;
while ((current = bis.read()) != -1) {
baf.append((byte) current);
}
/* Convert the Bytes read to a String. */
FileOutputStream fos = new FileOutputStream(file);
fos.write(baf.toByteArray());
fos.close();
}
} catch (IOException e) {
Log.d("ImageManager", "Error: " + e);
}
return null;
}