您的位置:首页 > 理论基础 > 计算机网络

Android下载多个图片(传统Http请求方式)

2016-03-22 15:56 549 查看
    今天要做一个图片下载方式,图片不算多,图片最多有5个左右。我想了好几个办法,

1、文件下载:可行,但是对于单一的图片下载来说,略复杂了些。

2、第三方图片下载:可行,但是需要去了解和学习第三方,所需的时间成本还有该第三方框架的利用率不足,jar包可能还不小。

3、循环子线程:可行(不推荐), 如果我要下载2个图片,将子线程加入for循环内,并最终呈现。

       但有严重缺陷,线程延时,图片顺序不能做保证。如果是线程套线程的话,第一个子线程结束了,嵌套在该子线程f的or循环内的子线程还没结束,从而主线程获取不到子线        程          里获取的图片。

* 最终方法:其实也是最简单的方法,用一个子线程就可以搞定。 1、首先让后台给你提供一个接口 “ 获取所有需要拉取的图片的名称” 2、其次就是路径了。

  下面贴上关键代码:

这里是我的子线程方法:

String[] picName;<span style="color:#009900;">//这是你通过接口获取的,图片名数组</span>
Bitmap[] bm=new Bitmap[picName.length];//<span style="color:#009900;">创建一个Bitmap[] 来接收图片资源</span>
private void ManyPic(final String[] picName) {
new Thread(new Runnable() {

@Override
public void run() {
Message ms = handler.obtainMessage();
try {
if (ImageUtil.getBitmap(url, picName) != null) {
bm = ImageUtil.getBitmap(url, picName);
ms.what = BITMAP_SUCCESS;
ms.obj = bm;
ms.sendToTarget();
} else {
ms.what = BITMAP_ERROR;
ms.obj = "下载失败";
ms.sendToTarget();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}).start();
}

这里是多图片下载的关键地方:

参数path  (例:Http://192.168.0.1/Image/)

参数picName (例: picName[0]=123456.jpg)

直接在这里根据我的图片名数组的长度,循环Http请求,并形成一个Bitmap[] 再返回。

<span style="color:#3366ff;">/**
* 获取网络上需要下载的图片
* @path=固定的路径
* @picName=提前获取的图片名的数组
* */</span>
public static Bitmap[] getBitmap(String path,String[] picName) throws IOException{
Bitmap[] b=new Bitmap[picName.length];
<span style="color:#009900;">//根据图片数组长度来,循环获取我们需要的图片数组</span>
for (int i = 0; i < picName.length; i++) {
URL url = new URL(path+picName[i]);
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
<span>		</span><span style="color:#009900;">//这里可以调节延迟时间</span>
conn.setConnectTimeout(5000);
conn.setRequestMethod("GET");
if(conn.getResponseCode() == 200){
InputStream inputStream = conn.getInputStream();
Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
b[i]=bitmap;
}
}

return b;
}


OK 大功告成,仅仅用了一个子线程就可以获取多个图片下载。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android 图片