如何在单独的线程中实现universal-image-loader?

时间:2015-03-16 20:39:29

标签: android universal-image-loader

在项目中,通用图像加载器用于显示gridview,viewpager。我需要集成app的离线模式, 我需要在单独的线程中下载和存储光盘上的图像,然后在显示gridview时,viewpager图像应该从光盘加载。 如何在单独的线程中实现universal-image-loader?我已经尝试了但是一段时间之后活动退出它就像线程和加载通用图像加载器超过了应用程序缓存,我的意思是有些事情出错了。我已经看到了不同的讨论,但我真的需要通过UIL在单独的线程中下载。

@Override
public void run() {
    int x = 0;
    while (x < 1) {
        try {
            Thread.sleep(1500);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        processBitmaps();

    }
}


public void processBitmaps() {
   fulls = Application.getOnThisDeviceFulls();
    if (fulls != null && fulls.size() > 0) {

        for (int index = 0; index < fulls.size(); index++) {
            Full full= fulls.get(index).getFull();
            ArrayList<Page> pages =fulls.get(index).getPages();
            for (int j = 0; j < pages.size(); j++) {

                String pagePattern = ...

                try {
                    Thread.sleep(1500);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                loadUILImage();


                if (j == pages.size() - 1) {
                 Application.removeFullOnDevice(index);
                }
                if (resetIndex) {
                    break;
                }
            }
            if (resetMagazineIndex) {

                magazineIndex = 0;
                Log.i("magazinethread ", resetIndex + "");
                resetIndex = false;
                break;
            }


        }
    }
}

1 个答案:

答案 0 :(得分:0)

文档中的simple example基于线程工作:

// Load image, decode it to Bitmap and return Bitmap to callback
imageLoader.loadImage(imageUri, new SimpleImageLoadingListener() {
    @Override
    public void onLoadingComplete(String imageUri, 
                                  View view, Bitmap loadedImage) {
        // Do whatever you want with Bitmap
    }
});

使用ImageLoaderConfiguration来定义特定的线程参数:

ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context)
        .threadPoolSize(3) 
        .threadPriority(Thread.NORM_PRIORITY - 2)
        ...

来自JavaDoc

  

public void loadImage(String uri, ImageLoadingListener listener)

     

将加载映像任务添加到执行池。图片将随之返回   ImageLoadingListener.onLoadingComplete(String,android.view.View,   android.graphics.Bitmap)回调}。注意:   必须在此之前调用init(ImageLoaderConfiguration)方法   方法调用