5

多くの大きな画像をリモートで読み込むアプリがあります。nostra の Universal Image Loader ( https://github.com/nostra13/Android-Universal-Image-Loader ) を使用すると、メモリ不足エラーが頻繁に発生します。これを防ぐためにイメージローダーを設定する方法がわかりません。

これは私の現在の ImageLoader 仕様です:

ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context)
        .enableLogging()
        .memoryCache(new WeakMemoryCache())
        .build(); 

this.imgDispOpts = new DisplayImageOptions.Builder()
        .cacheInMemory() 
        .cacheOnDisc() 
        .imageScaleType(ImageScaleType.IN_SAMPLE_INT) 
        .build();

this.imageLoader = ImageLoader.getInstance();
this.imageLoader.init(config);

はい、displayImage() を呼び出すときに imgDispOpts を渡します。

4

4 に答える 4

5

メモリにキャッシュせず、EXACTLYスケールタイプとRGB_565ビットマップデコードを使用してください。

ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context)
    .enableLogging()
    .build(); 

this.imgDispOpts = new DisplayImageOptions.Builder() 
    .cacheOnDisc() 
    .imageScaleType(ImageScaleType.EXACTLY) 
    .bitmapConfig(Bitmap.Config.RGB_565)
    .build();
于 2013-03-20T21:08:25.933 に答える
0

以下の構成を試してください

ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context)
    .enableLogging()
     discCacheExtraOptions(maxImageWidthForDiscCache, maxImageHeightForDiscCache, CompressFormat.PNG, 0);
    .memoryCache(new WeakMemoryCache())
    .build();

 this.imgDispOpts = new DisplayImageOptions.Builder()
    .cacheInMemory() 
    .cacheOnDisc() 
    .imageScaleType(ImageScaleType.EXACTLY) 
    .build();

画像の遅延読み込みを使用することもできます。https://github.com/thest1/LazyList

FedorVlasovのプロジェクトLazyListに基づくユニバーサルイメージローダー。LazyListの改良版。

于 2013-03-20T13:05:12.937 に答える