0

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

我正在使用 Wea​​kReference,似乎当我有太多位图时,垃圾收集器会破坏我的弱引用。我该如何处理?

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

    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 张时,其中一些不会显示。

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

谢谢!

4

1 回答 1

1

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

您可以在此处阅读更多相关信息:http: //developer.android.com/training/displaying-bitmaps/cache-bitmap.html 这非常方便:使用它,您不必自己处理弱引用的内存: -)

于 2013-02-07T14:06:14.547 回答