【问题标题】:android - How to handle the exception when the image is loading from webandroid - 从网络加载图像时如何处理异常
【发布时间】:2012-02-14 07:31:29
【问题描述】:

在我的应用程序中,我将视图动态添加到线性布局中。每个视图都包含图像。滚动视图中的整个线性布局。最初图像加载正确。假设我向上/向下滚动屏幕,然后我得到内存不足的异常。请任何人帮助我。

以下是我的代码,请参考。

Code

这是在活动中

//itemurl是一个字符串

//holder是Viewholder实例

DownLoadImageInAThreadHandler_tracked(ImageUrl,holder);

Method

private void DownLoadImageInAThreadHandler_tracked(final String imgurl,final ViewHolder holder) {

        //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;
    }

【问题讨论】:

    标签: android


    【解决方案1】:

    那是因为你在内存中创建了很多 Bitmap 对象。

    您是否考虑过使用 ListView-Adapter 模式?

    【讨论】:

    • 我没有使用列表活动。我正在创建两个自定义适配器扩展并向它们动态添加视图。
    • 我该如何解决这个问题?有什么代码可以帮助解决这个问题吗?
    • 使用列表视图!除非你有一个你不能用的用例。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-07
    • 1970-01-01
    • 2016-04-05
    • 1970-01-01
    • 2011-12-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多