最近遇到一个问题,使用webview实现一些功能,其中涉及到js通知native。
webview.addJavascriptInterface(this, "BUY"),在需要被js调用的方法上添加@JavascriptInterface 注释(annotation)。
然后在被调用方法中直接刷新界面的内容,这时候出现了奇怪的现象就是被修改的view突然消失了。
多次尝试后发现消失的概率很大,之前从没有遇到这种现象,在网络中也没有搜索到相关的信息。
重新查看代码,没有发现问题,突然想到是不是由于不同线程导致的问题,
于是打印出线程信息,发现问题原因:主线程的id是1,但js调用的方法中打印出的线程id每次都不相同,它们不是运行在同一线程中的。
至此找出问题的原因,js调用java中的方法是运行在子线程中的,如果要更新界面必须在主线程中进行。
修改之后就可以了。
阅读(647) | 评论(0) | 转发(0) |