我正在尝试在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张图片时,其中一些图片不会显示。
画廊教程不是那么好吗?还有其他方法可以实现吗?
谢谢!
答案 0 :(得分:1)
不应使用软引用,而应该看看lrucache类(它在蜂窝中可用,但是是android支持库的一部分。
您可以在此处详细了解:http://developer.android.com/training/displaying-bitmaps/cache-bitmap.html 它非常方便:使用它并且您不必使用弱引用自己处理内存: - )