Android universal-imageloader Out of memoryの最適化案について
1059 ワード
1、oomがよく現れる場合は、次のように試してみてください.
1)メモリにcacheInMemory(false)をキャッシュすることを無効にし、oomがまだ発生している場合、アプリケーションにメモリ漏れがあるように見える場合は、MemoryAnalyzerを使用して検出します.そうでない場合は、次の手順(すべてまたはいくつかを試します)を実行します.
2)配置されたスレッドプールのサイズを小さくする(
.threadPoolSize(...)
)、1~5を推奨する3)表示オプションで使用する.bitmapConfig(Bitmap.Config.RGB_565) . RGB_565モードで消費されるメモリ比ARGB_8888モードは2倍少ない.
4)構成で使用する.diskCacheExtraOptions(480, 320, null)
5)構成で使用する.memoryCache(newWeakMemoryCache()またはメモリのキャッシュを完全に無効にする(don't call.cacheInMemory()).
6)表示オプションで使用する.imageScaleType(ImageScaleType.EXACTLY)または.imageScaleType(ImageScaleType.IN_SAMPLE_INT)
7)RoundedBitmapDisplayerの使用を避ける.呼び出し時にARGB-8888モードを使用して新しいBitmapオブジェクトを作成し、メモリキャッシュモード(ImageLoaderConfiguration.memoryCache(…)について表示します.すでに実現した良い方法を使うことができます.
2、ImageLoaderはImageViewのheight,widthによって画像の幅を決める
3、必ずImageLoaderConfigurationを初期化してください.そうしないと、エラーが発生します.
4、キャッシュをオンにすると、デフォルトでは外付けSDカードのアドレス(/sdcard/Android/data/[package_name]/cache)がキャッシュする.
構成後、oomの問題を解決できます.このような問題が発生する場合は、コードに問題があるかどうかを再検出する必要があります.