Java 如何与Glide同步加载位图?
我想将Arwork图像加载到我的通知中(使用Java 如何与Glide同步加载位图?,java,android,synchronization,android-glide,Java,Android,Synchronization,Android Glide,我想将Arwork图像加载到我的通知中(使用MediaStyle) 使用以下代码使我的应用程序崩溃,并出现错误: java.lang.IllegalArgumentException:必须在 背景线程 如有必要,我也愿意将库更改为UniversalImageLoader 另外 我使用此方法加载通知的图像。。。此通知是在服务中创建的,因此ui不会被中断!由于我没有通知ImageView的ID,我不知道如何用另一种方式设置它! 此外,我需要位图将其添加到MediaSession的MediaMetaD
MediaStyle
)
使用以下代码使我的应用程序崩溃,并出现错误:
java.lang.IllegalArgumentException:必须在
背景线程
如有必要,我也愿意将库更改为UniversalImageLoader
另外
我使用此方法加载通知的图像。。。此通知是在服务中创建的,因此ui不会被中断!由于我没有通知ImageView的ID,我不知道如何用另一种方式设置它!
此外,我需要位图将其添加到MediaSession的MediaMetaData中
如何与Glide同步加载位图
如果您确实打算从主线程(也称为UI线程)检索网络映像,那么这将是一种不好的方法。需要相当长时间的操作应该从单独的线程执行,或者在更糟糕的情况下,它甚至可能导致ANR(应用程序无响应)状态
如果您需要Glide中的位图
,您可以以异步方式完美地检索它,您可以这样做:
Glide.with(mContext)
.load("http://example.com/imageurl")
.asBitmap()
.into(new SimpleTarget<Bitmap>() {
@Override
public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) {
// you can do something with loaded bitmap here
// .....
holder.mImageView.setImageBitmap(resource);
}
});
Glide.with(mContext)
.加载(“http://example.com/imageurl")
.asBitmap()
.into(新的SimpleTarget(){
@凌驾
public void onResourceReady(位图资源、动画)
必须在后台线程上调用此方法
我也有同样的问题,我的目标服务器是一个单线程嵌入式设备,所以我们需要一个接一个地发送请求。经过一些研究,我发现这项工作适合我
public class GlideConfModule implements GlideModule {
@Override
public void applyOptions(Context context, GlideBuilder builder) {
//The number "1" make things happen.
builder.setResizeService(new FifoPriorityThreadPoolExecutor(1));
}
@Override
public void registerComponents(Context context, Glide glide) {}
}
不要忘记将此“定义”代码放在Manifest.xml中
<application ...
<meta-data
android:name="path.to.your.GlideConfModule"
android:value="GlideModule" />
您可以强制此方法在ui线程上运行。尽管您应该避免这种情况。答案对您有帮助吗?没有,我返回到了旧版本。这是否回答了您的问题?
public class GlideConfModule implements GlideModule {
@Override
public void applyOptions(Context context, GlideBuilder builder) {
//The number "1" make things happen.
builder.setResizeService(new FifoPriorityThreadPoolExecutor(1));
}
@Override
public void registerComponents(Context context, Glide glide) {}
}
<application ...
<meta-data
android:name="path.to.your.GlideConfModule"
android:value="GlideModule" />