В последней строке я получаю аварии:Недостаточно памяти с LruCache?
InputStream in = new BufferedInputStream(new FileInputStream(file));
byte[] buf = new byte[(int) file.length()];
int numRead = in.read(buf);
final Bitmap bitmap = BitmapFactory.decodeByteArray(buf, 0, numRead); <--- crash
Как избежать этого?
E/dalvikvm-heap: Out of memory on a 31961104-byte allocation.
Я понимаю, что 31MB - это предел для использования памяти? Использование LRUCache
для хранения изображений. Я установил 60 МБ для хранения данных. Это слишком много?
public static int cacheSize = 60 * 1024 * 1024; // 4MiB
public static LruCache<String, Bitmap> images = new LruCache<String, Bitmap>(cacheSize) {
protected int sizeOf(String key, Bitmap value) {
return value.getByteCount();
}
};
В моем случае изображение составляет около 3 МБ и по меньшей мере 18 изображений, которые необходимо хранить в кеше. Это большой спрос со стороны телефона для хранения 60 МБ?
У меня есть попытка поймать код, почему приложение завершается?
'изображение около 3MB', если это размер файла, это не имеет значения. что имеет значение при загрузке изображения в память, это размер растрового изображения: ширина х высота х глубина (обычно по 4 байт на пиксель по умолчанию) – njzk2
А что, если размер растрового изображения большой? Что я могу сделать? –