在我们的应用中,少不了一些H5页面,相应的就会有很多与原生的交互,今天遇到一个坑,就是在我的桥接类中JSInterface的方法中,我偶然发现,含有@JavascriptInterface标识的方法,实际上方法不是运行在主线程,而是一个JSBridge的线程中,这时如果有相应的UI操作,一定要记住,这里需要切换到主线程,否则可能引发一些不可预期的异常。这期只是一个常识性的东西,但是也是最近才发现这个问题,所以在此简单记录。
@JavascriptInterface
public void receiveCoupon(){//js调用Activity领取优惠券接口
Log.i(TAG, "receiveCoupon: "+Thread.currentThread().getName());
if (onHandleJsMethodListener!=null){
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
onHandleJsMethodListener.onReceiveCoupon();
}
});
}
}