对于我的应用程序,我正在读取存储在手机中的所有图像(JPEG)文件,并将其ID和缩略图(不是原始位图)保存到HashMap中。我可以存储多少缩略图,直到内存不足?
代码:
final String[] PROJECTION =
new String[] {MediaStore.Images.Media._ID};
Cursor pictureCursor = getContentResolver().query(Images.Media.EXTERNAL_CONTENT_URI,
PROJECTION, null, null, MediaStore.Images.Media._ID);
HashMap<Integer,Bitmap> thumbnails = new HashMap<Integer,Bitmap>();
int id;
int id_index = pictureCursor.getColumnIndex(MediaStore.Images.Media._ID);
int THUMBNAIL_TYPE = MediaStore.Images.Thumbnails.MICRO_KIND;
ContentResolver content_resolver = context.getContentResolver();
while (pictureCursor.moveToNext()) {
id = pictureCursor.getInt(id_index);
Bitmap thumbnail = MediaStore.Images.Thumbnails.getThumbnail(content_resolver, id, THUMBNAIL_TYPE, null);
thumbnails.put(id, thumbnail);
}
我现在有我的手机上的200幅图像,现在工作得很好。但我担心在某些时候,应用程序将耗尽内存并崩溃。
内存不足,需要考虑?或者缩略图足够小,实际上,应用程序不会耗尽内存?
编辑 如果我应该担心运行内存,什么是最好的方式,如果我想要的东西,像Android的原生图库应用程序,它似乎并不有一个“加载更多图片”按钮,而是一个无休止图像流?
谢谢