Как избежать исключения из памяти

В моем приложении я загружаю изображения из Интернета, используя URL-адрес изображения. У меня много изображений. Так я реализовал технику подкачки для этого, и я отобразил 15 изображений для каждой страницы в вертикальном порядке. В этом случае я прокручиваю вверх / вниз страницу для просмотра изображений, в это время мое приложение разбилось, и я выбрал исключение из памяти. Пожалуйста, кто-нибудь может мне помочь.

Logcat:

02-07 11:23:52.256: ERROR/ACRA(7236): El Gifto fatal error : bitmap size exceeds VM budget(Heap Size=7943KB, Allocated=3485KB, Bitmap Size=12546KB) 02-07 11:23:52.256: ERROR/ACRA(7236): java.lang.OutOfMemoryError: bitmap size exceeds VM budget(Heap Size=7943KB, Allocated=3485KB, Bitmap Size=12546KB) 02-07 11:23:52.256: ERROR/ACRA(7236): at android.graphics.BitmapFactory.nativeDecodeStream(Native Method) 02-07 11:23:52.256: ERROR/ACRA(7236): at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:690) 02-07 11:23:52.256: ERROR/ACRA(7236): at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:490) 02-07 11:23:52.256: ERROR/ACRA(7236): at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:697) 02-07 11:23:52.256: ERROR/ACRA(7236): at android.graphics.drawable.Drawable.createFromStream(Drawable.java:657) 02-07 11:23:52.256: ERROR/ACRA(7236): at com.ibkr.elgifto.GiftCategories$itemlistadapter$3.getDrawableFromUrl(GiftCategories.java:837) 02-07 11:23:52.256: ERROR/ACRA(7236): at com.ibkr.elgifto.GiftCategories$itemlistadapter$3.run(GiftCategories.java:724) 

Вот мой код:

 public void DownLoadImageInAThreadHandler(final CategoryData Item, final ViewHolder holder) { final Handler handler = new Handler() { @Override public void handleMessage(Message message) { holder.imgitem.setImageDrawable((Drawable) message.obj); holder.imgitem.setVisibility(View.VISIBLE); holder.progress.setVisibility(View.GONE); } }; //Thread for getting the attributes values Thread t = new Thread() { public void run() { try { drawable = getDrawableFromUrl(Item.ImageUrl); if(drawable != null) { //Send the message to the handler Message message = handler.obtainMessage(1, drawable); handler.sendMessage(message); } else { int idNoImage = R.drawable.giftsuggestionsnoimage; Drawable dwgNoImg = GiftCategories.this.getResources().getDrawable(idNoImage); //Send the message to the handler Message message = handler.obtainMessage(1, dwgNoImg); handler.sendMessage(message); } } catch(Exception exp) { System.out.println("Exception in DownLoadImageInAThread : " + exp.getMessage()); } } private Drawable getDrawableFromUrl(String imageUrl) throws IOException { Drawable image = null; try { InputStream in = (java.io.InputStream) new java.net.URL(imageUrl).getContent(); if (in != null) { image = Drawable.createFromStream(in, "image"); in.close(); } } catch (Exception ex) { ex.printStackTrace(); } return image; } }; t.start(); } 

Если у вас проблемы с памятью, вам нужно перейти с двумя вариантами. Сначала. => Вам нужно декодировать изображение, используя Bitmap или Second => Загрузите изображение и сохраните его во временной папке и используйте его. Когда вам не нужно удалять все файлы из папки.

Для загрузки изображения и сохранения его в папке проверьте эту ссылку

Для декодирования Проверьте эту ссылку из stackoverflow . Может быть, это поможет вам. благодаря

Это обычная проблема, и я думаю, вы должны использовать для своего растрового изображения коллекцию SoftReference. Проверьте документы и онлайн-ресурсы для SoftReference: это позволит Android очистить пространство, занимаемое растровым изображением, когда это необходимо.

На предустановленных телефонах ICS растровые изображения были созданы на куче dalvik, и их очистка памяти была вызвана в финализаторе, который не является серебряным сверстником http://code.google.com/p/android/issues/detail?id=8488

Используйте объект растрового изображения и убедитесь, что вы используете метод рециркуляции

Intereting Posts
Шаблон для нескольких загрузчиков с LoaderManager? Как идентифицировать кнопку, нажатую из динамически созданной таблицы Цвет фона селектора Android LinearLayout Генератор контент-провайдера для Android Studio Лучший способ конвертировать iPhone 3-D игровой код для работы на устройствах Android? Исключение происходит для некоторых пользователей с помощью электронной почты Постоянно скрывать строку состояния Android Как изменить контент перед рендерингом в Android WebView? Как сохранить файл jar внешним, но все еще использовать его классы в моем проекте Android? Как управлять удалением элемента в CursorAdapter Gradle plugin 'com.android.library' не выполняет поиск в пользовательских хранилищах maven Что делать, если ОС убила IntentService? Аутентификация учетной записи службы Google из Сколько типов контекста в android и что лучше использовать Android: Как перейти назад из подэкрана предпочтений через панель действий в xml?