X5WebView webView =new X5WebView(this,null)我这里用的是腾讯的TBS浏览服务.详情参考上一篇文章: https://www.jianshu.com/writer#/notebooks/10278901/notes/42868406
2、设置初始化WebSetting
3、给WebView添加addJavascriptInterface()
例如:
用webview打开网页,然后通过webview与app的本地java代码进行交互。1、设置webview支持Javascript
mWebview.getSettings().setJavaScriptEnabled(true)
2、加进一个回调的代理类JavaScriptInterface,并给它一个调用的名称:ncp
mWebView.addJavascriptInterface(new JavaScriptInterface(), "ncp")
final class JavaScriptInterface {
public int callOnJs() {
return 1000
}
public void callOnJs2(String mode) {
//TODO
}
}
3、JS页面调用android方法
<script type="text/javascript">
window.onload = function(){
var _int_value = window.ncp.callOnJs() //通过ncp代理调用android方法
}
</script>
具体原因是这样的:1、Java调用js里面的函数、效率并不是很高、估计要200ms左右吧、做交互性很强的事情、这种速度很难让人接受、而js去调Java的方法、速度很快、50ms左右、所以尽量用js调用Java方法。
2、Java调用js的函数、没有返回值、调用了就控制不到了。
3、Js调用Java的方法、返回值如果是字符串、你会发现这个字符串是native的、转成locale的才能正常使用、使用toLocaleString()函数就可以了、不过这个函数的速度并不快、转化的字符串如果很多、将会很耗费时间。
4、网页中尽量不要使用jQuery、执行起来需要5-6秒、最好使用原生的js写业务脚本、以提升加载速度、改善用户体验。