关于android下载大图问题 最近做一个应用,用textview显示html,当其中含有img标签时后台异步下载图片,下载完成后前台刷新显示,但是当图片过大时,下载显示总会崩溃。有什么好的方法呢?求助一下 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 BitmapFactory.Options options = new BitmapFactory.Options();options.inSampleSize = 8;options.inJustDecodeBounds = false;bmp = BitmapFactory.decodeStream(e.getContent(), null, options);压缩 我试过了,还是会崩溃。主要是listview里面图片太多时就可能发生溢出 1.大图片读取采用压缩2.listView加载图片,用软引用把图片缓存,每次读图片时先从缓存里读取,没读取到再去下载图片到缓存。除了软引用,还可以采用sd卡缓存,把图片缓存到本地,可以大大提高速度 安卓的OOM内存溢出问题太常见了,给你三个建议。1.读Google提供的图片处理优化原文http://developer.android.com/training/displaying-bitmaps/index.html2.中文翻译http://blog.csdn.net/h3c4lenovo/article/details/81196193.使用第三方的优化包处理图片如aQuery.jar还有中国人写的afinal.jar,这些在OSChina网站可以连接到。 以前找到过一个算法可以算出重新采样率,然后把图片重新采样下就可以了,具体代码记不清了,方法名好像是subSample 压缩是必须的,还有listview可以进行分页读取啊,你不会一次性去读取所有数据吧,让服务端做一个分页就行了,还有建议使用google官方的一个图片缓存机制,ImageFetcher什么的,自行百度。 看了下,感觉很有收获,现在能正常显示,但是图片多时listview上下滑动会有卡住的感觉 http://www.cnblogs.com/nanguabing/archive/2012/12/09/2810446.html加载10M图片 没有内存溢出 楼主可以用bitmap不要R.id的形式 容易卡住的原因是过多的占用UI线程处理数据了。这属于你的设计问题,需要自己看代码分析了。给你的建议是进入页面之后开启一个线程池,所有获取的动作全部放在线程里执行,线程处理完之后再通知listview重绘。如果线程处理很快,就需要设置一个机制比如每隔Ns才会通知UI重绘。要记住的是UI线程只绘制UI。 android 求助 ListView中嵌套switch后,ListView不可点击 app首次执行时SharePreference不能获得配置的问题 关于adb无法连接手机的问题 手机当导游 玩转深圳大运会必备软件—乐游深圳(大运版) 怎么设置重复的每月提醒的闹钟 大伙帮我分析下这个问题 android开发文档翻译 如何实现多个Fragment 切换不刷新数据,保留当前状态? webview选择图片问题 移植播放器到android ,播放问题 讨论一下,显示网络图片文字,用webview好还是listview好?
options.inSampleSize = 8;
options.inJustDecodeBounds = false;
bmp = BitmapFactory.decodeStream(e.getContent(), null, options);压缩
2.listView加载图片,用软引用把图片缓存,每次读图片时先从缓存里读取,没读取到再去下载图片到缓存。
除了软引用,还可以采用sd卡缓存,把图片缓存到本地,可以大大提高速度
1.读Google提供的图片处理优化原文
http://developer.android.com/training/displaying-bitmaps/index.html2.中文翻译
http://blog.csdn.net/h3c4lenovo/article/details/81196193.使用第三方的优化包处理图片
如aQuery.jar还有中国人写的afinal.jar,这些在OSChina网站可以连接到。
容易卡住的原因是过多的占用UI线程处理数据了。这属于你的设计问题,需要自己看代码分析了。
给你的建议是进入页面之后开启一个线程池,所有获取的动作全部放在线程里执行,线程处理完之后再通知listview重绘。如果线程处理很快,就需要设置一个机制比如每隔Ns才会通知UI重绘。
要记住的是UI线程只绘制UI。