代码之家  ›  专栏  ›  技术社区  ›  lacas

Android异步任务下载图像错误

  •  0
  • lacas  · 技术社区  · 14 年前
       private static class asyncDownloadImage extends AsyncTask<Object, Integer, Integer> 
        {
            Bitmap _image=null;
    
            @Override
            protected Integer doInBackground(Object... params) {
    
                String _url=com.nag.online.utils.objectToString(params[0]);
    
                byte tries=0;
    
                do  {
                    _image          = com.nag.online.utils.downloadPicture(_url);
    
                    try {Thread.sleep(10);} catch (InterruptedException e) {    e.printStackTrace(); }
    
                    tries++; if (tries>utils.TRIES) break;
                } while (_image==null);
    
                final Bitmap _imagex=_image;
    
                Runnable r = new Runnable() {   
                    public void run() {   
                        ImageViewImage.setImageBitmap(_imagex);
                        ImageViewImage.setScaleType(ScaleType.CENTER);
                        ImageViewImage.refreshDrawableState();
                    }};
    
                handler.post(r);  
                isReady=true;
    
                return 0;
          }
    
            @Override
            protected void onPostExecute(Integer result) {
                /*if (!_image.isRecycled()) {
                    _image.recycle();
                    _image=null;
                    System.gc();
                }*/
    
                System.gc();
            }
        }
    

    11-10 13:32:07.057:错误/dalvikvm(4904):内存不足:堆大小=8455KB,已分配=5755KB,位图大小=7855KB

    或者当我在“onpostcexecute”的代码中输入时:

     if (!_image.isRecycled()) {
                    _image.recycle();
                    _image=null;
                    System.gc();
                }
    

    11-10 13:40:55.117:ERROR/AndroidRuntime(4981):java.lang.RuntimeException:Canvas:尝试使用回收位图android.graphics.bitmap@44cadc98

    1 回复  |  直到 14 年前
        1
  •  1
  •   Macarse    14 年前

    不是重新发明轮子。

    here .