在onPostExecute()中使用Picasso库加载位图的问题

时间:2017-07-10 21:25:57

标签: android performance android-asynctask picasso android-bitmap

我在Picasso的循环中加载位图时遇到了问题。我在AsyncTasks onPostExecute()中加载它们。我知道我需要全局Target变量来防止GC收集它们。仍然没有加载我的位图。这是我的代码:

private static Map<Integer, Bitmap> markerBitmaps;
private String[] markerUrls;
private Integer[] catIds;

//some code

private final static List<Target> targets = new ArrayList<Target>();
  @Override
    protected void onPostExecute(Void result) {

        final int[] id = new int[1];
        int counter = 0;
        for(String s : markerUrls) {

                id[0] = catIds[counter];
            Target target = new Target() {
                @Override
                public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
                    targets.remove(this);
                    markerBitmaps.put(id[0], bitmap);
                }
                @Override
                public void onBitmapFailed(Drawable errorDrawable) {
                    targets.remove(this);
                }
                @Override
                public void onPrepareLoad(Drawable placeHolderDrawable) {
                }
            };

            Log.i("BITMAP URL IS:", s);
            targets.add(target);
            Picasso.with(MapsMenuActivity.this)
                    .load(s)// Start loading the current target
                    .into(target);
            counter++;
        }

        Log.i("BITMAPS NUM: ", String.valueOf(markerBitmaps.size()));
    }

我的markerBitmaps地图的大小始终为0.

0 个答案:

没有答案