如何与Glide同步加载位图?

时间:2017-02-04 13:15:55

标签: java android synchronization android-glide

我想将Arwork-Image加载到我的通知中(使用 while(true){ cr = myFile.read(); if((cr == '\n')||(cr == '\r') || (cr < 0)) break; lcd.print(cr); } )。

使用以下代码使我的应用程序崩溃并出现错误:

  

java.lang.IllegalArgumentException:您必须在a上调用此方法   后台线程

@media (min-width: 768) and (max-width: 991px) {

我也愿意更改图书馆,例如如有必要,请MediaStyle

另外

我使用此方法加载图像以进行通知...此通知是在服务中创建的,因此ui不会被中断!由于我没有通知ImageView的ID,我不知道如何以另一种方式设置它! 此外,我需要将Bitmap添加到MediaSession的MediaMetaData中。

3 个答案:

答案 0 :(得分:0)

  

如何与Glide同步加载Bitmap?

如果您打算从主线程(也称为UI线程)检索网络图像,那将是错误方法。需要花费大量时间的操作应该从单独的线程执行,或者在更糟糕的情况下甚至可以导致ANR(应用程序无响应)状态。

如果您需要来自Glide的Bitmap,您可以通过异步方式完美检索它,这就是您的操作方法:

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);
                }
            });

答案 1 :(得分:0)

  

您必须在后台线程上调用此方法

val bitmap = Glide.with(CONTEXT)
            .asBitmap()
            .load("URL")
            .submit().get()

答案 2 :(得分:0)

我有同样的问题,我的目标服务器是一个单线程嵌入式设备,因此我们需要一个一个地发送请求。经过一番研究后,我发现这项工作很适合我。

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" />

顺便说一句,我使用Glide 3.x