内存泄漏图像库Android

时间:2013-02-07 13:57:08

标签: android bitmap weak-references

我正在尝试在android中实现图库。 代码基于http://www.mobisoftinfotech.com/blog/android/android-gallery-widget-example-and-tutorial/,我已经更改了一些细节。

我正在使用WeakReference,看来,当我的位图太多时,垃圾收集器会破坏我的弱点。我怎么处理这个?

我通过这个函数得到了我的位图:

    public static WeakReference<Bitmap> getBitmap(String imageName, int width,
        int height) {
    String pathToImage = getPathToImage(imageName);
    Options options = new BitmapFactory.Options();
    options.inJustDecodeBounds = true;
    BitmapFactory.decodeFile(pathToImage, options);

    /*
     * Calculate inSampleSize
     */
    options.inSampleSize = calculateInSampleSize(options, width, height);

    // Decode bitmap with inSampleSize set
    options.inJustDecodeBounds = false;

    WeakReference<Bitmap> scaledBitmap = new WeakReference<Bitmap>(
            BitmapFactory.decodeFile(pathToImage, options));
    return scaledBitmap;
}

我已经采用了解决方案320x480,所以我认为这不是很大......

当图库有超过3张图片时,其中一些图片不会显示。

画廊教程不是那么好吗?还有其他方法可以实现吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

不应使用软引用,而应该看看lrucache类(它在蜂窝中可用,但是是android支持库的一部分。

您可以在此处详细了解:http://developer.android.com/training/displaying-bitmaps/cache-bitmap.html 它非常方便:使用它并且您不必使用弱引用自己处理内存: - )