2012-02-14 53 views
0

在我的應用程序中,我將視圖動態添加到線性佈局。每個視圖都包含圖像。滾動視圖中的整個線性佈局。最初圖像加載正確。假設我向上/向下滾動屏幕,然後我得到了內存不足異常。請任何機構幫助我。android - 如何處理從網絡加載圖像的異常

以下是我的代碼請參考。

Code 

這是在活動

// Itemurl是一個字符串

//支架是Viewholder實例

DownLoadImageInAThreadHandler_tracked(的ImageUrl,保持件);

Method 

私人無效DownLoadImageInAThreadHandler_tracked(最後絃樂imgUrl的,最終ViewHolder持有人) {

 //Thread for getting the attributes values 
     Thread t = new Thread() 
     { 
      public void run() 
      {      
       try 
       { 

        Drawable drawable = getDrawableFromUrl_tracked(imgurl);       
        System.out.println("Drawable(after downloading):"+drawable);       
        if(drawable != null) 
        {            
         holder.trackedimgURL.setImageDrawable(drawable); 
         holder.trackedimgURL.setVisibility(View.VISIBLE); 
         holder.trackedprogress.setVisibility(View.INVISIBLE); 
        } 
        else 
        { 
         System.out.println("Set the default image(drawable is null)"); 
         holder.trackedimgURL.setImageResource(R.drawable.giftsuggestionsnoimage);       
        }            
       } 
       catch(Exception exp) 
       { 
        System.out.println("Exception in DownLoadImageInAThread : " + exp.getMessage()); 
       } 
      }             
     }; 
     t.start();    
    } 

    public Drawable getDrawableFromUrl_tracked(String url) 
    { 

     Drawable image = null; 

     try { 
      InputStream in = (java.io.InputStream) new java.net.URL(url).getContent(); 
      if (in != null) { 
       image = Drawable.createFromStream(in, "image"); 
       in.close(); 
      } 
     } catch (Exception ex) { 
      ex.printStackTrace(); 

     } 
     return image; 
    } 

回答

0

那是因爲你是在內存中創建了大量位圖對象。

您是否考慮使用ListView適配器模式?

+0

我在這裏沒有使用列表活動。我正在創建兩個自定義適配器,併爲其動態添加視圖。 – 2012-02-14 08:46:07

+0

我該如何解決這個問題?有沒有幫助這個問題的代碼? – 2012-02-14 08:48:52

+0

使用ListView!除非你有一個用例,否則你不能。 – 2012-02-14 08:53:21