我使用glide将图像使用其资源ID加载到位图中,我想将位图传递给自定义视图类的成员函数。
这是我的代码:
try {
Bitmap bm=Glide.
with(getApplicationContext()).
load(mThumbIds[position]).
asBitmap().
into(width, height). // Width and height
get();
drawView.setImg(bm);
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
每当我尝试运行它时,我都会收到以下错误:
无法启动活动ComponentInfo {...}: java.lang.IllegalArgumentException:你必须在a上调用这个方法 后台线程
我该如何解决这个问题?
答案 0 :(得分:0)
您无法在主线程上调用get()
,因为它执行长时间运行的任务并且可能会导致性能问题。
相反,请考虑继承ImageViewTarget
或ViewTarget
并使用into()
代替get()
。 into()
将异步加载图像,您可以使用自定义子类在onReasourceReady
中调用相应的成员函数。
在调用null
或onLoadFailed
时,请务必清除您的位图(通常将onLoadCleared
传递给成员函数)。