AndroidTouchGalleryLibrary 是一个非常好用的库,

但是使用的时候,需要小心处理,容易引发OutOfMemoryError,同时使用UrlTouchImageView的时候,

从网络下载是没有缓存的,因此每次都是新加载图片,同时使用在线家在较大图片容易导致程序挂掉

因此将原先的UrlTouchImageView类中的此段代码更换

原代码:

//No caching load
public class ImageLoadTask extends AsyncTask<String, Integer, Bitmap>
{
@Override
protected Bitmap doInBackground(String... strings) {
String url = strings[0];
Bitmap bm = null;
try {
URL aURL = new URL(url);
URLConnection conn = aURL.openConnection();
conn.connect();
InputStream is = conn.getInputStream();
int totalLen = conn.getContentLength();
InputStreamWrapper bis = new InputStreamWrapper(is, 8192, totalLen);
bis.setProgressListener(new InputStreamProgressListener()
{
@Override
public void onProgress(float progressValue, long bytesLoaded,
long bytesTotal)
{
publishProgress((int)(progressValue * 100));
}
});
bm = BitmapFactory.decodeStream(bis);
bis.close();
is.close();
} catch (Exception e) {
e.printStackTrace();
}
return bm;
} @Override
protected void onPostExecute(Bitmap bitmap) {
if (bitmap == null)
{
mImageView.setScaleType(ScaleType.CENTER);
bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.no_photo);
mImageView.setImageBitmap(bitmap);
}
else
{
mImageView.setScaleType(ScaleType.MATRIX);
mImageView.setImageBitmap(bitmap);
}
mImageView.setVisibility(VISIBLE);
mProgressBar.setVisibility(GONE);
} @Override
protected void onProgressUpdate(Integer... values)
{
mProgressBar.setProgress(values[0]);
}
}

更换为:

 //No caching load
public class ImageLoadTask extends AsyncTask<String, Integer, Bitmap>
{
@Override
protected Bitmap doInBackground(String... strings) {
String url = strings[0];
Bitmap bm = null;
try {
URL aURL = new URL(url);
URLConnection conn = aURL.openConnection();
conn.connect();
InputStream is = conn.getInputStream();
int totalLen = conn.getContentLength();
InputStreamWrapper bis = new InputStreamWrapper(is, 8192, totalLen);
bis.setProgressListener(new InputStreamProgressListener()
{
@Override
public void onProgress(float progressValue, long bytesLoaded,
long bytesTotal)
{
publishProgress((int)(progressValue * 100));
}
});
BitmapFactory.Options options=new BitmapFactory.Options();
options.inTempStorage = new byte[100*1024];
options.inPreferredConfig = Bitmap.Config.RGB_565;
options.inPurgeable = true;
options.inSampleSize = 2;//压缩
options.inInputShareable = true;
bm = BitmapFactory.decodeStream(bis, null, options);
bis.close();
is.close();
} catch (Exception e) {
e.printStackTrace();
}
return bm;
} @Override
protected void onPostExecute(Bitmap bitmap) {
if (bitmap == null)
{
mImageView.setScaleType(ScaleType.CENTER);
bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.no_photo);
mImageView.setImageBitmap(bitmap);
}
else
{
mImageView.setScaleType(ScaleType.MATRIX);
mImageView.setImageBitmap(bitmap);
}
mImageView.setVisibility(VISIBLE);
mProgressBar.setVisibility(GONE);
} @Override
protected void onProgressUpdate(Integer... values)
{
mProgressBar.setProgress(values[0]);
}
}

AndroidTouchGalleryLibrary 优化的更多相关文章

  1. 关于DOM的操作以及性能优化问题-重绘重排

     写在前面: 大家都知道DOM的操作很昂贵. 然后贵在什么地方呢? 一.访问DOM元素 二.修改DOM引起的重绘重排 一.访问DOM 像书上的比喻:把DOM和JavaScript(这里指ECMScri ...

  2. In-Memory:内存优化表的事务处理

    内存优化表(Memory-Optimized Table,简称MOT)使用乐观策略(optimistic approach)实现事务的并发控制,在读取MOT时,使用多行版本化(Multi-Row ve ...

  3. 试试SQLSERVER2014的内存优化表

    试试SQLSERVER2014的内存优化表 SQL Server 2014中的内存引擎(代号为Hekaton)将OLTP提升到了新的高度. 现在,存储引擎已整合进当前的数据库管理系统,而使用先进内存技 ...

  4. 01.SQLServer性能优化之----强大的文件组----分盘存储

    汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 文章内容皆自己的理解,如有不足之处欢迎指正~谢谢 前天有学弟问逆天:“逆天,有没有一种方 ...

  5. 03.SQLServer性能优化之---存储优化系列

    汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 概  述:http://www.cnblogs.com/dunitian/p/60413 ...

  6. 前端网络、JavaScript优化以及开发小技巧

    一.网络优化 YSlow有23条规则,中文可以参考这里.这几十条规则最主要是在做消除或减少不必要的网络延迟,将需要传输的数据压缩至最少. 1)合并压缩CSS.JavaScript.图片,静态资源CDN ...

  7. 数据库优化案例——————某市中心医院HIS系统

    记得在自己学习数据库知识的时候特别喜欢看案例,因为优化的手段是容易掌握的,但是整体的优化思想是很难学会的.这也是为什么自己特别喜欢看案例,今天也开始分享自己做的优化案例. 最近一直很忙,博客产出也少的 ...

  8. 【前端性能】高性能滚动 scroll 及页面渲染优化

    最近在研究页面渲染及web动画的性能问题,以及拜读<CSS SECRET>(CSS揭秘)这本大作. 本文主要想谈谈页面优化之滚动优化. 主要内容包括了为何需要优化滚动事件,滚动与页面渲染的 ...

  9. Web性能优化:What? Why? How?

    为什么要提升web性能? Web性能黄金准则:只有10%~20%的最终用户响应时间花在了下载html文档上,其余的80%~90%时间花在了下载页面组件上. web性能对于用户体验有及其重要的影响,根据 ...

随机推荐

  1. Linux:Shell 常用通配符

    字符 含义 * 匹配 0 或多个字符 ? 匹配任意一个字符 [list] 匹配 list 中的任意单一字符 [!list] 匹配 除list 中的任意单一字符以外的字符 [c1-c2] 匹配 c1-c ...

  2. jQuery的XX如何实现?——4.类型检查

    往期回顾: jQuery的XX如何实现?——1.框架 jQuery的XX如何实现?——2.show与链式调用 jQuery的XX如何实现?——3.data与cache机制 -------------- ...

  3. AspNet MVC 缓存

    服务端缓存技术 请求域内的缓存 每个Asp.Net请求都会在Asp.Net框架中创建一个新的System.Web.HttpContext对象(HttpContext对象封装有关个别 HTTP 请求的所 ...

  4. paip.语义分析--单字词形容词表180个

    paip.语义分析--单字词形容词表180个  INSERT INTO t (word)  SELECT DISTINCT word FROM `word_main` where tsisin is ...

  5. Atitit.实现继承的原理and方法java javascript .net c# php ...

    Atitit.实现继承的原理and方法java javascript .net c# php ... 1. 实现继承的问题 1 2. 如何拷贝基类方法?采用prototype原型方式,通过冒充对象 1 ...

  6. IOS设计模式浅析之简单工厂模式(SimpleFactory)

    概述 首先说明一下,简单工厂模式不属于23种GOF设计模式之一.它也称作静态工厂方法模式,是工厂方法模式的特殊实现.这里对简单工厂模式进行介绍,是为本系列后面的工厂方法和抽象工厂模式做一个引子. 定义 ...

  7. iOS开发---集成百度地图,位置偏移问题

    iOS 集成百度SDK 请参考 百度地图官方文档 ,这里不就多啰嗦了 本文介绍的是在百度地图上根据经纬度,自定义气泡时,气泡位置的偏移,在我们天朝这种事是很常见的,也见怪不怪了,在项目中使用的百度地图 ...

  8. js系列(10)js的运用(二)

        本节继续介绍在html页面中js的运用.   (1)数码时钟:(http://files.cnblogs.com/files/MenAngel/text05.zip) <!DOCTYPE ...

  9. [推荐]PMO学习贴大集合

    [推荐]PMO学习贴大集合 http://wenku.baidu.com/view/a9b19bd4240c844769eaeed9.html http://wenku.baidu.com/view/ ...

  10. RTL8710 ROM 符号表 函数,常量,变量

    函数 Name Address Ordinal ---- ------- ------- __vectors_table Reset_Handler NMI_Handler HardFault_Han ...