2016-11-25 31 views
3

下面的代码段用于加载文件转换成位图,保存在内部的目录(即PNG或JPG格式)文件毕加索目标onBitmapLoaded不叫在for循环

final List<Target> targets = new ArrayList<Target>(); 
final List<Target> targetsNormal = new ArrayList<Target>(); 
for (int j = 0; j < defaultTileImage.size(); j++) { 

    final String slangTiles = defaultTileImage.get(j).getPairName() + 
      ApplicationConstants.SLANG_TILES; 
    final String normalTiles = defaultTileImage.get(j).getPairName() + 
      ApplicationConstants.NORMAL_TILES; 

    final int k = j; 

    Target target = new Target() { 
     @Override 
     public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) { 
      Log.i("Targets", "Loaded: " + k); 
      targets.remove(this); 
      saveIntoBitmap(bitmap, slangTiles); 
     } 
     @Override 
     public void onBitmapFailed(Drawable errorDrawable) { 
      targets.remove(this); 
     } 
     @Override 
     public void onPrepareLoad(Drawable placeHolderDrawable) { 
      Log.i("Targets", "Preparing: " + k); 
     } 
    }; 


    Target targetNormal = new Target() { 
     @Override 
     public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) { 
      Log.i("TargetsNormal", "Loaded: " + k); 
      targetsNormal.remove(this); 
      saveIntoBitmapSlang(bitmap, normalTiles); 
     } 
     @Override 
     public void onBitmapFailed(Drawable errorDrawable) { 
      targetsNormal.remove(this); 
     } 
     @Override 
     public void onPrepareLoad(Drawable placeHolderDrawable) { 
      Log.i("TargetsNormal", "Preparing: " + k); 
     } 
    }; 
    targetsNormal.add(targetNormal); 
    Picasso.with(MainActivity.this) 
      .load(defaultTileImage.get(j).getNormalTileImg()) // Start loading the current target 
      .resize(100, 100) 
      .into(targetNormal); 

    targets.add(target); 
    Picasso.with(MainActivity.this) 
      .load(defaultTileImage.get(j).getSlangTileImg()) // Start loading the current target 
      .resize(100, 100) 
      .into(target); 
} 

还参观这个link和按本实施使Target成为强有力的参考指南。但不幸的是很多时候onBitmapLoaded没有得到任何回调。

我很欣赏你在解决proble米帮助

+0

老兄你可以发布的情况下,图像url的截图? (建议使用[Glide](https://github.com/bumptech/glide)) – Gattsu

+0

截图?其实我只是在做保存这个文件的操作。 – QuokMoon

+1

[启用日志记录](https://github.com/square/picasso/blob/master/picasso/src/main/java/com/squareup/picasso/Picasso.java#L447)在毕加索,并进行分析。 –

回答

5

确保targetstargetsNormal是全局变量代替地方。

如果它们是局部变量,只要方法已经离开,它们可以被垃圾回收。