Я новичок во всем предмете управления памятью, поэтому есть много вещей, которые я не понимаю.
Я пытаюсь кэшировать изображение в своем приложении, но у меня возникают проблемы с его потреблением памяти:
Весь код фрагмента Bitmap Chapt довольно скопирован отсюда: http://developer.android.com/training/displaying-bitmaps/index.html
Я отлаживал код и проверял размер кучи в представлении DDMS в eclipse, и после этих строк кода происходит скачок в 15 мб:
options.inJustDecodeBounds = false;
return BitmapFactory.decodeResource(res, resId, options);
в методе "decodeSampledBitmapFromResource".
Изображение 1024x800, 75kb jpg файл. Согласно тому, что я уже видел в Интернете, объем памяти, который предполагается использовать этому изображению, составляет около 1024 * 800 * 4 (байт на пиксель) = 3,125 мб
Все темы, касающиеся этой темы, не говорят, почему она занимает гораздо больше памяти, чем должна. Есть ли способ кэшировать одно изображение с разумным объемом памяти?
ИЗМЕНИТЬ
Я попытался использовать метод decodeFile, предложенный в ответе @ArshadParwez ниже. Используя этот метод, после метода BitmapFactory.decodeStream память увеличивается только на 3,5 Мб - проблема решена, но я хочу кэшировать растровые изображения непосредственно из ресурса.
Я заметил, что во время метода decodeResource есть 2 памяти "прыжки" - один из около 3,5 Мб, что разумно, и еще один странный один из 14mb. Для чего используются 14mb и почему это происходит?