java.lang.OutOfMemoryError: размер растрового изображения превышает бюджет виртуальной машины? - PullRequest
1 голос
/ 15 июня 2010

друзья

Я использую следующий код для отображения растрового изображения на экране и имею следующие и предыдущие кнопки для изменения изображений.

и ошибка выхода из памяти

Новый код

HttpGet httpRequest = null; 


                             try { 
                                     httpRequest = new HttpGet(mImage_URL[val]); 
                             } catch (Exception e) { 
                                 return 0;
                             } 


                             HttpClient httpclient = new DefaultHttpClient(); 
                             HttpResponse response = (HttpResponse) httpclient.execute(httpRequest); 

                             Bitmap bm;
                             HttpEntity entity = response.getEntity(); 
                             BufferedHttpEntity bufHttpEntity = new BufferedHttpEntity(entity); 
                             InputStream is = bufHttpEntity.getContent(); 
                             try
                             {
                                 bm = BitmapFactory.decodeStream(is);
                                                                              }catch(Exception ex)
                             {
                             }
                             is.close(); 

Старый код

URL aURL = new URL(mImage_URL[val]);  
                             URLConnection conn = aURL.openConnection(); 

                             conn.connect();  

InputStream is = null;
                             try
                             {
                                 is= conn.getInputStream();  
                             }catch(IOException e)
                             {
                             }
BufferedInputStream bis = new BufferedInputStream(is);  
 bm = BitmapFactory.decodeStream(bis);
 bis.close();  
 is.close(); 
 img.setImageBitmap(bm);

и он выдавал мне ошибку decoder-> decode return false.

на изображениях размером более 400 КБ.

поэтому после поиска в Google я получил новый код в качестве ответа старый код не выдавал мне ошибки памяти на этих изображениях, но decoder-> decode возвращает false, поэтому я выбрал новый код.

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

1 Ответ

1 голос
/ 15 июня 2010

Вы должны декодировать с опцией inSampleSize, чтобы уменьшить потребление памяти. Странно нехватка памяти при загрузке изображения в растровый объект

Другой параметр inJustDecodeBounds может помочь вам найти правильное значение inSampleSize http://groups.google.com/group/android-developers/browse_thread/thread/bd858a63563a6d4a

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...