2016-10-07 2 views
0

При загрузке изображения, если файл находится в папке R.drawable в приложении мы можем сделать:Увеличенная используется оперативной памяти при загрузке изображений

ImageView imgView = (ImageView)itemView.findViewById(R.id.imgView); 
imgView.setImageResource(R.drawable.led); 

Для загрузки изображения заданного пути я использую (путь может быть: ImagePath = «/storage/emulated/0/NewFolder/image.png»:.

ImageView imgView = (ImageView)itemView.findViewById(R.id.imgView); 
Bitmap bitmap1 = BitmapFactory.decodeFile(data.getPath()); 
imgView.setImageBitmap(bitmap1); 

Это увеличивает много оперативной памяти используется, и никогда не уменьшается

Могу ли я делать это правильно Кажется, что нет.

+0

Вы рассмотрели использование библиотеки загрузки изображений, которая обрабатывает сжатие? –

+0

использование bitmapOption.inSampleSize для уменьшения размера изображения в памяти зависит от экрана –

+0

использование Picasso https://github.com/square/picasso –

ответ

0

При создании растрового изображения явно убедитесь, что вы перерабатывают его, когда вам не нужно его больше с:

bitmap.recycle() 

Обычно это называется по методам OnDestroy активности/фрагмента/ViewModel. В случае первого Android делает это автоматически, но когда вы явно создаете растровое изображение, он остается в памяти.

0

Идеальное решение этого типа вопроса является использование отложенной загрузки

Lazy Loading Example

0

Вы сделали правильно, чтобы добавить его в качестве отдельных вопросов. Я думаю, вы можете использовать Universal ImageLoader lib для загрузки локального или любого заданного URL-адреса изображения в ваше изображение.