如何检查Picasso lib上传的所有文件?

时间:2016-10-16 17:03:02

标签: android picasso

我想在渲染MainActivity之前检查所有图片的加载:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ...
    getBitmapsByURLs(urls);
}

public void getBitmapsByURLs(List<String> urls) {
    final List<Target> targets = new ArrayList<>();

    for (int i = 0; i < urls.size(); i++) {
        final int k = i;
        Target target = new Target() {

            @Override
            public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
                Log.i("TEMP", "Loaded: " + k);
                targets.remove(this);
            }

            @Override
            public void onBitmapFailed(Drawable errorDrawable) {
                targets.remove(this);
            }

            @Override
            public void onPrepareLoad(Drawable placeHolderDrawable) {
                Log.i("TEMP", "Preparing: " + k);
            }
        };
        targets.add(target);
        Picasso.with(this)
                .load(urls.get(i))
                .memoryPolicy(NO_CACHE, NO_STORE)
                .into(target);
    }
}

如何检查内部onCreate所有图片的加载? 如果我在方法onCreate上写while(在调用getBitmapsByURLs之后),那么它将在所有图片加载之前被调用。

1 个答案:

答案 0 :(得分:0)

使用

时必须知道
tokenvalue

加载图片,它是一个异步任务。第一个毕加索从互联网下载图片。下载完成后,图片将被加载到目标中。当然,下载时,主要线程将永远不会等待。毕加索使用Picasso.with(this) .load(urls.get(i)) .memoryPolicy(NO_CACHE, NO_STORE) .into(target); 或接口Observer-Subcriber之类的东西来让主线程知道唐宁已经结束。总而言之,无论你在Future之后写什么,它都会在毕加索完成加载图片之前调用。(因为下载图片并将其加载到目标中通常需要更多时间)。 还有什么。这不是推荐在getBitmapsByURLs(urls)进行这种时间成本工作的方法。因为onCreate()在主线程中被调用。如果你做了一些事情需要花费很多时间在这里,那么您将收到应用程序无响应错误。