如何使用Universal ImageLoader加载图像而不显示

我正在尝试做这样的事情: Android Map api v2使用ImageView的自定义标记但是我坚持使用图像加载器。

试:

Bitmap bmImg = imageLoader.loadImageSync(url); 

LogCat给了我

  04-13 14:11:44.953: E/ImageLoader(18542): android.os.NetworkOnMainThreadException 

这是我的代码。 我有一个ArrayList相机,需要所有信息(titrle,position,url等)。

 public void drawPicsOnMap() { String title = null; String place = null; for (int i = 0; i<camera.size(); i++) { Bitmap.Config conf = Bitmap.Config.ARGB_8888; Bitmap bmp = Bitmap.createBitmap(80, 80, conf); Canvas canvas = new Canvas(bmp); // paint defines the text color, // stroke width, size Paint color = new Paint(); color.setTextSize(35); color.setColor(Color.BLACK); Camera cam = camera.get(i); LatLng coord = new LatLng(cam.lat, cam.lon); title = Integer.toString(cam.id); place = cam.place; String url = cam.img; Bitmap bmImg = imageLoader.loadImageSync(url); //modify canvas canvas.drawBitmap(bmImg, 0,0, color); canvas.drawText(title, 30, 40, color); Marker mark = map.addMarker(new MarkerOptions() .position(coord) .title(title) .snippet(place) .icon(BitmapDescriptorFactory .fromBitmap(bmp))); markers.put(mark.getId(), url); } } 

尝试这个:

 imageLoader.loadImage(url, new SimpleImageLoadingListener(){ @Override public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) { super.onLoadingComplete(imageUri, view, loadedImage); //write your code here to use loadedImage } }); 

这里onLoadingComplete将在UI线程上调用,这使得线程安全

您无法在主线程上进行任何联网。 请参阅说明 。 UIL通常在调用displayImage时为您创建线程和东西,但loadImageSync不会。 创建一个线程并加载它或使用AsynTask。