2012-02-14 55 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