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