2016-05-03 2 views
1

i use Универсальный загрузчик изображений 1.9.5 для загрузки изображения с URL-адреса.
это адаптерandroid универсальный загрузчик изображений из памяти ошибка

public class BinderDataImg extends BaseAdapter { 

static final String KEY_IMG = "img"; 
LayoutInflater inflater; 
List<HashMap<String,String>> imgHashmap; 
ViewHolder holder; 

ImageLoader imageLoader = ImageLoader.getInstance(); 

public BinderDataImg(Activity act, List<HashMap<String,String>> map) { 
    this.imgHashmap = map; 
    inflater = (LayoutInflater) act 
      .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
} 

public int getCount() { 
    // TODO Auto-generated method stub 
    return imgHashmap.size(); 
} 

public Object getItem(int arg0) { 
    // TODO Auto-generated method stub 
    return null; 
} 

public long getItemId(int position) { 
    // TODO Auto-generated method stub 
    return 0; 
} 

public View getView(int position, View convertView, ViewGroup parent) { 
    View vi=convertView; 
    if(convertView==null){ 
     vi = inflater.inflate(R.layout.list_img, null); 
     holder = new ViewHolder(); 
     holder.iv_img =(ImageView)vi.findViewById(R.id.imageViewImg); 

     vi.setTag(holder); 
    } 
    else{ 

     holder = (ViewHolder)vi.getTag(); 
    } 

    String uri = imgHashmap .get(position).get(KEY_IMG); 

    imageLoader.displayImage(uri, holder.iv_img); 

    return vi; 
} 

static class ViewHolder{ 
    ImageView iv_img; 
} 

}

это активность с конфиг загрузчика изображения Универсальной

public class ActImg extends AppCompatActivity { 

static final String KEY_IMG = "img"; 
List<HashMap<String,String>> imgHashmap; 

List<ClassImg> imgList = null; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_act_img); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 

    DisplayImageOptions defaultOptions = new DisplayImageOptions.Builder() 
      .cacheInMemory(true) 
      .cacheOnDisk(true) 
      .imageScaleType(ImageScaleType.EXACTLY) 
      .bitmapConfig(Bitmap.Config.RGB_565) 
      .resetViewBeforeLoading(true) 
      .displayer(new FadeInBitmapDisplayer(300)) 
      .showImageOnLoading(R.drawable.img_loading) 
      .build(); 

    ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(getApplicationContext()) 
      .defaultDisplayImageOptions(defaultOptions) 
      .threadPoolSize(3) 
      .memoryCache(new WeakMemoryCache()) 
      .diskCacheSize(100 * 1024 * 1024) 
    .build(); 

    Intent i = getIntent(); 

    CustomListView lvi = (CustomListView)findViewById(R.id.listViewImg); 

    try { 
     XmlPullParserImg parser = new XmlPullParserImg(); 
     imgList = parser.parse(getAssets().open(file)); 
     BinderDataImg binderdata = new BinderDataImg(this, imgHashmap); 
     lvi.setAdapter(binderdata); 

    }catch(IOException e) { 
     e.printStackTrace(); 
    } 

} 

обновление: это LogCat
05-03 03: 50: 38,011 18383- 18878/tttdigital.readmangaonline E/ImageLoader: null
java.lang.OutOfMemoryError
at android.graphics.Bitmap.nativeCre ели (Native Method)
в android.graphics.Bitmap.createBitmap (Bitmap.java:689)
в android.graphics.Bitmap.createBitmap (Bitmap.java:666)
в android.graphics.Bitmap.createBitmap (Bitmap.java:599)
в com.nostra13.universalimageloader.core.decode.BaseImageDecoder.considerExactScaleAndOrientatiton (BaseImageDecoder.java:218)
в com.nostra13.universalimageloader.core.decode.BaseImageDecoder.decode (BaseImageDecoder.java: 91)
at com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.decodeImage (LoadAndDisplayImageTask.java:265)
at com.nostra13.universalimageloader.core.LoadAndDisplayImageTas k.tryLoadBitmap (LoadAndDisplayImageTask.java:238)
на com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.run (LoadAndDisplayImageTask.java:136)
в java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1080)
в java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:573)
в java.lang.Thread.run (Thread.java:856)

я могу загрузить изображение из URL, но некоторые изображения не отображаются, и я получаю ошибку OutOfMemory.
как исправить?

+0

пожалуйста, добавьте logcat – USKMobility

+0

http://stackoverflow.com/questions/17211154/universal-image-loader-uil-n ostra-out-of-memory-error – USKMobility

+0

@USKМобильность: я был обновлен в своем сообщении – abcd1234

ответ

0

Есть несколько способов, вы можете сделать это,

1) увеличить размер памяти кэша ниже пример устанавливает его на 15

ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context).threadPoolSize(3) 
      .threadPriority(Thread.MIN_PRIORITY + 3) 
      .denyCacheImageMultipleSizesInMemory() 
      .memoryCacheSize(1048576 * 15)    
      .discCache(new UnlimitedDiscCache(cacheDir)) 
      .defaultDisplayImageOptions(DisplayImageOptions.createSimple()) 
      .build(); 

2) Сокращение пула потоков размер i я использовал 3 ниже

ImageLoaderConfiguration.Builder(context).threadPoolSize(3) 

3) Кроме того, попробуйте эту настройку, как это работает в скольжении вместо ARGB_8888 использования RGB_565

.bitmapConfig(Bitmap.Config.RGB_565) 

Кроме того, в общем, вы можете использоватьlargeHeap=trueв файле манифеста, если вы имеете дело с загрузка большого набора изображений в ваше приложение

+0

с большим значениемHeap = true, он использует для использования API? или любой API может его использовать? – abcd1234

+0

Нет нет версии min для того, чтобы она поддерживала всю версию android –

+0

это нормально для памяти устройства? – abcd1234

Смежные вопросы