android–ListView加载图像时非常慢(使用Universal Image Loader)

android–ListView加载图像时非常慢(使用Universal Image Loader),第1张

概述我的listView只用文本运行非常流畅–但是一旦我尝试加载缩略图(甚至从缓存中),它就会运行SOO波动.我正在使用UniversalImageLoaderscript我的ArticleEntryAdapter中的代码在公共ViewgetView(…)方法中:/***PHOTOS*/ImageLoaderConfigurationconfig=n

我的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)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1116395.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-29
下一篇2022-05-29

发表评论

登录后才能评论

评论列表(0条)

    保存