Android Universal Image Loader 1.9.0을 사용하도록 업그레이드를 테스트하고 있습니다. 나는 안드로이드 4.2에서 이것을 테스트했다. 나는 백그라운드 서비스에서 이미지를 다운로드하고 캐싱하여 사용자를 방해하지 않는 백그라운드 스레드에서 실행되는 문제를 발견했습니다. 그러나 UIL은 주 스레드에서 이러한 이미지를로드하지 않는다고 불평하고 있습니다. 주 스레드에서 이러한 이미지를로드하고 싶지 않습니다. 사용자가 실제로 지정된 이미지를 볼 때 다운로드 할 필요가 없도록 백그라운드에서 디스크에 캐시 할 수 있기를 원합니다. ImageLoader.loadImage 이외의 백그라운드 스레드에 이미지를 미리 캐시하는 다른 방법이 있습니까? 그렇지 않은 경우, 메인 스레드가 아닌 스레드에서 디스크에 프리 캐싱을 허용하려면 어떻게합니까? 이 코드는 모두 IntentService에서 실행됩니다.Universal Image Loader를 사용하여 인 텐트 서비스 (백그라운드 스레드)에서 이미지를 캐시하는 방법
ImageLoaderConfiguration :
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(
getApplicationContext())
.threadPriority(Thread.MAX_PRIORITY)
.memoryCacheSize(memoryCacheSize)
.denyCacheImageMultipleSizesInMemory()
.threadPoolSize(5)
.discCacheFileNameGenerator(new MyFileNameGenerator())
.tasksProcessingOrder(QueueProcessingType.LIFO)
.build();
DisplayImageOptions :
DisplayImageOptions options = new DisplayImageOptions.Builder().cacheOnDisc()
.imageScaleType(ImageScaleType.NONE).build();
로드 이미지 코드 :
imageLoader.loadImage(imageURI, options,
new SimpleImageLoadingListener() {
@Override
public void onLoadingComplete(String imageUri, View view,
Bitmap loadedImage)
{
loadNext(); // gives a notification update and loads next image URI in queue
}
@Override
public void onLoadingFailed(String imageUri, View view,
FailReason failReason)
{
loadNext(); // gives a notification update and loads next image URI in queue
}
});
이렇게 보이는 것은 주 스레드의 핸들러 검사도 무시합니다. 감사. –
정확히 같은 일을 @ user1236327 달성하려고 노력하고 있지만 loadImageSync 캐시가 표시되지 않습니다. 어떻게 관리 했습니까? – yahya
'loadImageSync (...) '에서 전달하는 옵션에서 캐싱을 활성화 했습니까? – NOSTRA