Glide在webview使用问题 You must call this method on the main thread at com.bumptech.glide.util.Ut


E/CrashReport: java.lang.IllegalArgumentException: You must call this method on the main thread
        at com.bumptech.glide.util.Util.assertMainThread(Util.java:135)
        at com.bumptech.glide.GenericRequestBuilder.into(GenericRequestBuilder.java:642)
        at winsky.cn.electriccharge_winsky.ui.activty.AdvertisingActivity.shareType(AdvertisingActivity.java:334)
        at winsky.cn.electriccharge_winsky.ui.activty.AdvertisingActivity$5.onClick(AdvertisingActivity.java:282)
        at android.view.View.performClick(View.java:6291)
        at android.view.View$PerformClick.run(View.java:24931)
        at android.os.Handler.handleCallback(Handler.java:808)
        at android.os.Handler.dispatchMessage(Handler.java:101)
        at android.os.Looper.loop(Looper.java:166)
        at android.os.HandlerThread.run(HandlerThread.java:65)

 本人是在Android和前端交互时需要得到前端返回的数据进行操作
@JavascriptInterface
public void shareAction(String shareUrl) {
   Glide进行相关图片加载//报错

}
错误如下
java.lang.IllegalArgumentException: You must call this method on the main thread
        at com.bumptech.glide.util.Util.assertMainThread(Util.java:135)
        at com.bumptech.glide.GenericRequestBuilder.into(GenericRequestBuilder.java:642)

之后修改为用 mhandler进行发送处理事件

@JavascriptInterface
public void shareAction(String shareUrl) {
  
    mhandler.sendEmptyMessageDelayed(0, 1000);//可正常运行

}private Handler mhandler = new Handler() {
    public void handleMessage(Message msg) {
        getMoreDataDialog(bitmapUrl);
    }

};
原因
由于我load js接口是在js调用android方法中(带有 @JavascriptInterface注解的Java函),原因分析:

    webview.loadur js接口不在主线程

验证得知@JavascriptInterface注解的Java函数运行在子线程

最后使用handler异步loadurl

你可能感兴趣的:(Glide)