android 异步缓冲图片到内存 压缩图片 避免OOM 内存溢出
来源:互联网 发布:linux文件改名命令 编辑:程序博客网 时间:2024/05/02 11:18
package com.yns.utils;import java.io.IOException;import java.net.MalformedURLException;import java.net.URL;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.os.AsyncTask;import android.support.v4.util.LruCache;import android.widget.ImageView;/** * 异步加载网络图片 并且缓存到内存中 * * @author Administrator * */public class AsyncImageLoader extends AsyncTask<String, String, Bitmap> {private ImageView img;private LruCache<String, Bitmap> lruCache;private int width;private int height;//url 本地ipprivate String url;public AsyncImageLoader(ImageView img, LruCache<String, Bitmap> lruCache,int width, int height, String url) {this.img = img;this.lruCache = lruCache;this.width = width;this.height = height;this.url = url;}@Overrideprotected Bitmap doInBackground(String... arg0) {// TODO Auto-generated method stub// 为位图设置100K的缓存BitmapFactory.Options opts = new BitmapFactory.Options();opts.inTempStorage = new byte[100 * 1024];// 设置位图颜色显示优化方式opts.inPreferredConfig = Bitmap.Config.RGB_565;// 4.设置图片可以被回收,创建Bitmap用于存储Pixel的内存空间在系统内存不足时可以被回收opts.inPurgeable = true;// 设置位图缩放比例opts.inSampleSize = 4;// 7.解码位图// decodeStream (InputStream is, Rect outPadding,// BitmapFactory.Options opts)Bitmap bitmap = null;try { // arg0 是图片名字 如aa.jpg 读者只有一张图片可以 直接写System.out.println("AsyncImageLoader.doInBackground()"+url + arg0[0]);bitmap = BitmapFactory.decodeStream(new URL(arg0[0]).openConnection().getInputStream(), null, opts);addBitmapToMemoryCache(url + arg0[0], bitmap);} catch (MalformedURLException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}return bitmap;}@Overrideprotected void onPostExecute(Bitmap result) {// TODO Auto-generated method stubsuper.onPostExecute(result);img.setImageBitmap(result);}// 调用LruCache的put 方法将图片加入内存缓存中,要给这个图片一个key 方便下次从缓存中取出来private void addBitmapToMemoryCache(String key, Bitmap bitmap) {if (getBitmapFromMemoryCache(key) == null) {lruCache.put(key, bitmap);}}// 调用Lrucache的get 方法从内存缓存中取图片public Bitmap getBitmapFromMemoryCache(String key) {return lruCache.get(key);}}
0 0
- android 异步缓冲图片到内存 压缩图片 避免OOM 内存溢出
- 加载图片避免内存溢出
- Android网络图片加载内存溢出(OOM)解决方案
- 防止图片decode时候(内存溢出)oom
- android 内存溢出 图片
- 图片内存溢出和图片压缩
- Android如何避免内存泄露及内存溢出(OOM)
- Android内存溢出(OOM)
- android OOM 内存溢出
- Android中图片压缩技术以及图片缓存避免OOM
- android图片加载内存优化方法,有效解决大图片内存溢出(oom)
- Android 解决 图片内存溢出
- Android图片处理内存溢出
- Android 内存管理--------------图片太大内存溢出
- 使用Bitmap--避免OOM内存溢出
- android 类似于微博拍照上传,压缩图片,避免oom
- ViewPager或ImgeView加载图片出现内存溢出(OOM)
- [安卓开发] ImageView加载图片内存溢出oom解决方案
- Java六大存储区域笔记
- android 4.0 之后调用系统设置
- C++ 读取文本文件
- 黑马程序员--------java Collection、Map集合 、泛型
- 大家来一起开发HTML5项目如何【系列一】
- android 异步缓冲图片到内存 压缩图片 避免OOM 内存溢出
- Spring中@Autowired注解、J2EE @Resource注解的区别
- java网络编程
- Android应用市场发布经验总结
- Spring中@Autowired注解、@Resource注解的区别
- Express不是内部或外部命令
- 类的前置声明
- 【iOS开发-87】怎么实现支付宝的手势解锁效果?利用touches3个方法和drawRect方法
- [toj1050]【二分图匹配】Courses