2013-02-14 66 views
0

我有大约53个图像显示在drwable的gridview中。但是,当我这样做的时候,我越来越喜欢。所以我开始使用通用图像加载器将这些图像缓存到光盘上并从那里拉出来。但我仍然得到OOM。 这里是我的配置在gridview中使用通用图像加载器时出现OutOfMemoryError

imageLoader =ImageLoader.getInstance(); 
       if (android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED)) 
        cacheDir=new File(android.os.Environment.getExternalStorageDirectory(),"icons"); 
       else 
        cacheDir=mContext.getCacheDir(); 
       if(!cacheDir.exists()) 
        cacheDir.mkdirs(); 
       config= new ImageLoaderConfiguration.Builder(mContext) 
       .memoryCache(new WeakMemoryCache()) 
       .denyCacheImageMultipleSizesInMemory() 
       .threadPoolSize(2) 
       .offOutOfMemoryHandling() 
      .discCache(new UnlimitedDiscCache(cacheDir)) 
       .enableLogging() 
       .build(); 
       imageLoader.init(config); 

options = new DisplayImageOptions.Builder() 
       .cacheOnDisc() 
       .bitmapConfig(Bitmap.Config.RGB_565) 
       .imageScaleType(ImageScaleType.IN_SAMPLE_INT) 
       .build(); 

,这是我BaseAdapter

的getview()
public View getView(int position, View convertView, ViewGroup parent) {  



     if(convertView==null) 
     { 
      ViewHolder holder=new ViewHolder(); 
      inflator = mContext.getLayoutInflater(); 
      convertView = inflator.inflate(R.layout.imagelayout, null); 
      holder.imageView=(ImageView)convertView.findViewById(R.id.imgDet); 
      convertView.setTag(holder); 

     } 
     ViewHolder hold=(ViewHolder)convertView.getTag(); 



     try 
     { 

      imageLoader.displayImage("drawable://" +mThumbIds[position], hold.imageView, options,new ImageLoadingListener() { 

       @Override 
       public void onLoadingStarted(String arg0, View arg1) { 
        // TODO Auto-generated method stub 

       } 

       @Override 
       public void onLoadingFailed(String arg0, View arg1, FailReason arg2) { 
        // TODO Auto-generated method stub 

       } 

       @Override 
       public void onLoadingComplete(String arg0, View arg1, Bitmap arg2) { 
        // TODO Auto-generated method stub 

       } 

       @Override 
       public void onLoadingCancelled(String arg0, View arg1) { 
        // TODO Auto-generated method stub 

       } 
      }); 

     }catch(OutOfMemoryError oom) 
     { 
      oom.printStackTrace(); 
     } 
     catch(Exception ex) 
     { 
      ex.printStackTrace(); 
     } 


     return convertView; 
    } 

请帮助我。

+0

你真的需要UIL来显示drawable的图像吗?你为什么不使用'imageView.setImageResource(...)'? – NOSTRA 2013-02-14 21:16:38

回答

0

始终考虑首先加载drawable的本地方法。而不是使用ImageLoader

相关问题