使用HttpURLConnection和AsyncTask从网络缓存图片

it2022-05-05  81

1.创建NetCacheUtils中创建downloadBitmap(String url)方法

private Bitmap downloadBitmap(String url){ HttpURLConnection conn=null; try { conn=(HttpURLConnection) new URL(url) .openConnection(); conn.setConnectTimeout(5000); conn.setReadTimeout(5000); conn.setRequestMethod("GET"); conn.connect(); int responseCode = conn.getResponseCode();//响应码 if(responseCode==200){//表示成功连接 InputStream inputStream = conn.getInputStream(); Bitmap bitmap = BitmapFactory.decodeStream(inputStream); return bitmap; } } catch (IOException e) { e.printStackTrace(); } finally{ conn.disconnect(); } return null; }

 2.在NetCacheUtils中调用这个方法

public class NetCacheUtils { public void getBitmapFromNet(ImageView iv_photo, String url) { // TODO Auto-generated method stub BitmapTask bitmaptask=new BitmapTask(); bitmaptask.execute(iv_photo,url);//开启AsyncTask,参数在doInBackground获取 } /*AsyncTask 异步任务即做一些简单的异步处理 ;是handle与线程池的封装 * 第一个泛型:参数类型泛型 * 第二个泛型:更新进度泛型 * 第三个泛型:onProgressUpdate的返回结果的泛型 * */ class BitmapTask extends AsyncTask<Object, Void, Bitmap>{ private ImageView pic; private String murl; /** * 后台耗时方法在此执行,子线程 */ @Override protected Bitmap doInBackground(Object... params) { pic = (ImageView) params[0]; murl = (String) params[1]; pic.setTag(murl);//将图片与url绑定 return downloadBitmap(murl); } /** * 更新进度,主线程 */ @Override protected void onProgressUpdate(Void... values) { // TODO Auto-generated method stub super.onProgressUpdate(values); } /** * 后台耗时方法结束之后,在此执行,主线程 */ @Override protected void onPostExecute(Bitmap result) { if(result!=null){ String tag = (String) pic.getTag(); if(tag.equals(murl)){ pic.setImageBitmap(result); } } System.out.println("从网络上加载图片啦"); } }

3.在MyBitMaputils类中调用NetCacheUtils类

public class MyBitMaputils { NetCacheUtils netcache; public MyBitMaputils(){ netcache=new NetCacheUtils(); } public void display(ImageView iv_photo, String url) { iv_photo.setImageResource(R.drawable.news_pic_default);//默认图片,防止图片的复用 //内存缓存 //本地缓存 //网络缓存(第一次) netcache.getBitmapFromNet(iv_photo,url); } }

4.就可以直接使用MyBitMaputils这个工具类了

转载于:https://www.cnblogs.com/wangying222/p/5269378.html

相关资源:httpurlconnection从网络上获取一张图片并显示

最新回复(0)