Glide错误:java.lang.IllegalArgumentException - 您必须在后台线程上调用此方法

时间:2016-07-30 05:02:22

标签: java android illegalargumentexception android-glide

我使用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上调用这个方法   后台线程

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

您无法在主线程上调用get(),因为它执行长时间运行的任务并且可能会导致性能问题。

相反,请考虑继承ImageViewTargetViewTarget并使用into()代替get()into()将异步加载图像,您可以使用自定义子类在onReasourceReady中调用相应的成员函数。

在调用nullonLoadFailed时,请务必清除您的位图(通常将onLoadCleared传递给成员函数)。