
我的ListVIEw只用文本运行非常流畅 – 但是一旦我尝试加载缩略图(甚至从缓存中),它就会运行SOO波动.
我正在使用Universal Image Loader script
我的ArticleEntryAdapter中的代码在公共VIEw getVIEw(…)方法中:
/** * PHOTOS */ ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(this.mContext) .enableLogging() .memoryCacheSize(41943040) .discCacheSize(104857600) .threadPoolSize(10) .build(); displayImageOptions imgdisplayOptions = new displayImageOptions.Builder() //.showStubImage(R.drawable.stub_image) .cacheInMemory() .cacheOndisc() //.imageScaleType(ImageScaleType.EXACT) .build(); ImageLoader imageLoader = ImageLoader.getInstance(); imageLoader.init(config); //loads image (or hIDes image area) imageLoader.displayImage("", vIEwHolder.thumbVIEw); //clears prevIoUs one if(article.photopath != null && article.photopath.length() != 0) { imageLoader.displayImage( "http://img.mysite.com/processes/resize_androID.PHP?image=" + article.photopath + "&size=150&quality=80", vIEwHolder.thumbVIEw, imgdisplayOptions ); vIEwHolder.thumbVIEw.setVisibility(VIEw.VISIBLE); } else { vIEwHolder.thumbVIEw.setVisibility(VIEw.GONE); //hIDe image vIEwHolder.thumbVIEw.invalIDate(); //should call after changing to GONE }Logcat显示它正在从缓存中加载图像(我认为):
ImageLoader Load image from memory cache [http://img.mysite.com/processes/...我正在我的三星galaxy Nexus上测试它并运行AndroID 4.0.4(虽然我的minSdkVersion =“8”)
解决方法:
将您的getVIEw方法之外的ImageLoaderConfiguration配置,displayImageOptions imgdisplayOptions,ImageLoader imageLoader的瞬间作为Adapter类的私有字段/成员.你应该只创建一次这些东西,而不是每次调用getVIEw.
编辑:没有看到你的整个Adapter类,这里是我正在说的东西.我希望它接近你拥有的东西,你可以使它成功. Lemme知道任何一种方式.
public class MyAdapterClass extends BaseAdapter { /** * PHOTOS */ static ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(this.mContext) .enableLogging() .memoryCacheSize(41943040) .discCacheSize(104857600) .threadPoolSize(10) .build(); static displayImageOptions imgdisplayOptions = new displayImageOptions.Builder() //.showStubImage(R.drawable.stub_image) .cacheInMemory() .cacheOndisc() //.imageScaleType(ImageScaleType.EXACT) .build(); static ImageLoader imageLoader = ImageLoader.getInstance(); /** * */ public MyAdapterClass() { // Todo auto-generated constructor stub imageLoader.init(config); } /* (non-Javadoc) * @see androID.Widget.Adapter#getCount() */ public int getCount() { // Todo auto-generated method stub return 0; } /* (non-Javadoc) * @see androID.Widget.Adapter#getItem(int) */ public Object getItem(int position) { // Todo auto-generated method stub return null; } /* (non-Javadoc) * @see androID.Widget.Adapter#getItemID(int) */ public long getItemID(int position) { // Todo auto-generated method stub return 0; } /* (non-Javadoc) * @see androID.Widget.Adapter#getVIEw(int, androID.vIEw.VIEw, androID.vIEw.VIEwGroup) */ public VIEw getVIEw(int position, VIEw convertVIEw, VIEwGroup parent) { //loads image (or hIDes image area) imageLoader.displayImage("", vIEwHolder.thumbVIEw); //clears prevIoUs one if(article.photopath != null && article.photopath.length() != 0) { imageLoader.displayImage( "http://img.mysite.com/processes/resize_androID.PHP?image=" + article.photopath + "&size=150&quality=80", vIEwHolder.thumbVIEw, imgdisplayOptions ); vIEwHolder.thumbVIEw.setVisibility(VIEw.VISIBLE); } else { vIEwHolder.thumbVIEw.setVisibility(VIEw.GONE); //hIDe image vIEwHolder.thumbVIEw.invalIDate(); //should call after changing to GONE } }} 总结 以上是内存溢出为你收集整理的android – ListView加载图像时非常慢(使用Universal Image Loader)全部内容,希望文章能够帮你解决android – ListView加载图像时非常慢(使用Universal Image Loader)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)