使用HttpURLConnection和AsyncTask从网络缓存图片
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这个工具类了
使用HttpURLConnection和AsyncTask从网络缓存图片的更多相关文章
- iOS网络编程(三) 异步加载及缓存图片---->SDWebImage
@SDWebImage提供一个UIImageView的类别以支持加载来自网络的远程图片.具有缓存管理.异步下载.同一个URL下载次数控制和优化等特征. @SDWebImage的导入1.https:// ...
- Android公共库——图片缓存 网络缓存 下拉及底部更多ListView 公共类
Android公共库——图片缓存 网络缓存 下拉及底部更多ListView 公共类 转载自http://www.trinea.cn/android/android-common-lib/ 介绍总结的一 ...
- Android LazyList 从网络获取图片并缓存
原演示地址 本文内容 环境 演示 LazyList 从网络获取图片并缓存 参考资料 本文是 Github 上的一个演示,通过网络获取歌手专辑的缩略图,并显示在 ListView 控件中.该演示具备将缩 ...
- 【Java/Android性能优 7】Android公共库——图片缓存 网络缓存 下拉及底部更多ListView 公共类
本文转自:http://www.trinea.cn/android/android-common-lib/ 介绍总结的一些android公共库,包含缓存(图片缓存.预取缓存.网络缓存).公共View( ...
- Android异步下载图片并且缓存图片到本地
Android异步下载图片并且缓存图片到本地 在Android开发中我们经常有这样的需求,从服务器上下载xml或者JSON类型的数据,其中包括一些图片资源,本demo模拟了这个需求,从网络上加载XML ...
- 综合使用LruCache和DiskLruCache 缓存图片
Activity public class MainActivity extends Activity { private GridView mPhotoWall; private P ...
- Android之简单了解Bitmap显示图片及缓存图片
昨天我们学了如何连接网络,今天我们就学习一下如何从把网上图片显示到项目中 今天主要用到的是Bitmap 类 Bitmap是Android系统中的图像处理的最重要类之一.用它可以获取图像文件信息,进行图 ...
- Android ListView从网络获取图片及文字显示
上一篇文章说的是ListView展示本地的图片以及文本,这一篇说一下如何从网络获取图片以及文本来显示.事实上,一般是先获取Josn或sml数据,然后解释显示.我们先从网上获取xml,然后对其进行解析, ...
- Android 网络下载图片
2中方法: 1. public byte[] downloadResource(Context context, String url) throws ClientProtocolException, ...
随机推荐
- 1.VS2010C++环境设置
一.需要下载的软件 1.visual studio 2010\\xxzx\tools\编程工具\MICROSOFT\VISUAL.STUDIO\VISUAL.STUDIO.201032位cn_visu ...
- POJ 3304 Segments (直线和线段相交判断)
Segments Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7739 Accepted: 2316 Descript ...
- setInterval和setTimeout调用方法小知识科普
function a() { alert('hello'); } setInterval(a, ); setInterval(a(), ); setInterval(); setInterval(); ...
- window
- UVa 297 - Quadtrees
题目:利用四叉树处理图片,给你两张黑白图片的四叉树,问两张图片叠加后黑色的面积. 分析:搜索.数据结构.把图片分成1024块1*1的小正方形,建立一位数组记录对应小正方形的颜色. 利用递归根据字符串, ...
- CString 转 char*; wstring 转 string
1. CString 转 char* ); CString name; name.Format(_T("bookUC%d.txt"),m_ID); std::wstring _n ...
- 快递查询API接口(trackingmore)
快递查询接口 目前提供快递查询的接口平台有: Trackingmore 快递100 快递网 不同接口的区别: (1)Trackingmore支持380家快递公司,其中有55家为国内的快递,其余325家 ...
- php 扩展 redis
1.通过phpinfo 查看php的版本( 要注意php 是nts 还是ts 通过phpinfo(); 查看其中的 Thread Safety 项,这个项目就是查看是否是线程安全,如果是:enabl ...
- RFID FDX HDX Technology
Got a tough RF environment? Turn to TI’s proven LF technology TI’s low-frequency (LF) technology has ...
- STUN: NAT 类型检测方法
STUN(Simple Transversal of UDP through NATs)[21]是RFC3489 规定的一种NAT 穿透方式,它采用辅助的方法探测NAT 的IP 和端口. STUN 的 ...