欢迎
我需要从服务器同步下载(一次一个)许多小型远程图像(50kb到100kb之间)并将它们作为PNG存储在设备中。我需要在没有第三方库的情况下实现这一点,并且我使用此代码但是它太慢了:
URL javaUrl = new URL(URLParser.parse(this.url));
URLConnection connection = javaUrl.openConnection();
InputStream input = new BufferedInputStream(javaUrl.openStream());
ByteArrayOutputStream output = new ByteArrayOutputStream();
byte data[] = new byte[1024];
long total = 0;
int count;
while ((count = input.read(data)) != -1) {
total += count;
output.write(data, 0, count);
}
// conversion to bitmap
InputStream in = new ByteArrayInputStream(output.toByteArray());
Bitmap original = BitmapFactory.decodeStream(in);
// storing bitmap as PNG file
FileOutputStream out = new FileOutputStream(filename);
original.compress(Bitmap.CompressFormat.PNG, 90, out);
output.flush();
output.close();
input.close();
in.close();
original.recycle();
问题是下载速度很慢。在设备中使用非常快的WIFI互联网(13MB,下载速度为1.4mbytes / s),在设备中下载图像需要3-4秒,但使用谷歌浏览器在我的PC中下载图像只需要100-200ms例如。
我的下载算法有问题吗?可以改进吗?
由于
答案 0 :(得分:1)
中间有一个完全不必要的字节数组。
BitmapFactory.decodeStream()
接受InputStream
,您从InputStream
获得URL.openStream()
。
它可能无法为您提供所需的速度提升,但它至少会消除您代码中完全没用的步骤。