Как решить нехватку памяти при исключении выделения 8294416 байт?

Я делаю приложение для отображения слайд-шоу изображений и видео. Я использую ViewFlipper для переворачивания видео и изображений. Кроме того, я использую библиотеку Picasso для отображения изображения из локального хранилища. Теперь, когда я пытаюсь запустить приложение, в какой-то момент оно работает отлично. Но время от времени я получаю исключение Недостаточно памяти при распределении 8294416 байт. Я погуглил и нашел одно решение, которое с помощью «android:largeHeap=true» помогло решить проблему. Но это не сработало для меня. Кто-нибудь знает, как это решить?

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


person Dhaval    schedule 18.05.2016    source источник
comment
уменьшить размер изображения   -  person Francesco verheye    schedule 18.05.2016
comment
Как я могу уменьшить его? Вы можете помочь мне с этим?   -  person Dhaval    schedule 18.05.2016
comment
Уменьшите изображение (ширина x высота в пикселях). Какого размера изображение?   -  person Francesco verheye    schedule 18.05.2016
comment
Любая конкретная причина, по которой вы используете ViewFlipper вместо ViewPager?   -  person the-ginger-geek    schedule 18.05.2016
comment
@Нил Да. На самом деле я реализовал оба. Но ViewFlipper идеально подходит для моего случая, так как я листаю и изображения, и видео.   -  person Dhaval    schedule 18.05.2016
comment
Вы можете сделать то же самое с ViewPager, используя фрагменты. Я думаю, что это также может помочь решить вашу проблему с памятью. Вы также можете попробовать использовать Glide для загрузки ваших ресурсов. У вас когда-нибудь возникала ошибка при попытке ViewPager?   -  person the-ginger-geek    schedule 18.05.2016
comment
Нет. Когда я использовал ViewPager, я добавлял только 15 изображений за раз. Но теперь я добавляю 62 изображения за раз и получаю исключение.   -  person Dhaval    schedule 18.05.2016
comment
ViewPager перерабатывает фрагменты. У вас не должно возникнуть проблемы с нехваткой памяти, если вы правильно ее реализуете. Я предлагаю вам переключиться на ViewPager.   -  person the-ginger-geek    schedule 18.05.2016
comment
@Нил Спасибо за ваше предложение. Это исключение возникает из-за ViewFlipper или размера изображения?   -  person Dhaval    schedule 18.05.2016
comment
Я бы сказал оба. В основном из-за огромного количества изображений, которые вы загружаете в него. ViewPager решит вашу проблему. Не думайте, что ViewFlipper перерабатывает представления.   -  person the-ginger-geek    schedule 18.05.2016
comment
@Нил Хорошо. Попробую реализовать с ViewPager. Спасибо еще раз.   -  person Dhaval    schedule 18.05.2016


Ответы (1)


Это хорошая тренировка для загрузки больших растровых изображений в Android.

https://developer.android.com/training/displaying-bitmaps/load-bitmap.html

Редактировать Это еще один ответ SO, связанный с Пикассо. Посмотрите на .resize(width, height) https://stackoverflow.com/a/23741267/1723525

person Francesco verheye    schedule 18.05.2016
comment
Спасибо. Я пройду через это. Но есть разные изображения, в которых я получаю это исключение. - person Dhaval; 18.05.2016
comment
@Dhaval Я добавил еще один ответ SO, который поможет вам - person Francesco verheye; 18.05.2016
comment
Спасибо. Я это тоже пересматриваю. - person Dhaval; 18.05.2016
comment
Спасибо. Это работает на данный момент. Я проверю с другими изображениями и выясню, что произойдет. - person Dhaval; 18.05.2016