我们的态度是:每天进步一点点,理想终会被实现。
1
前言
Android webview和JS的交互已经是老生常谈了,坑很多、问题也很多。即使再多的坑,我们很多情况下还是要使用,毕竟直接嵌入HTML可以节省开发成本、节约开发时间,以及之前很火的Android和H5混合开发。因此,今天我写了一篇Android WebView和JS交互的详细教程,以及我们的WebView我们真是项目中都有哪些坑,或者说哪些问题BUG。
WebView和JS交互
android webview 调用Java方法
WebView调用Java方法主要分为三个步骤:
允许WebView加载JS代码
编写JS的接口类,供JS调用
给WebView添加JS接口
MainActivity代码:`
编写JS的接口类,供JS调用
html代码:
运行结果:
这样我们就搭建了一个简单的demo,实现了WebView调用Java方法。
Android 调用JS的方法
Android 调用JS的方法很简单,JS调用Java方法只有一个步骤:
webView.loadUrl(javascript:jsString);
对就是这么简单,就这一个方法;jsString就是js代码的字符串。
在我们之前的MainActivity中添加两个控件:EditText和Button
Button设置点击事件:
JS中也添加一个方法:
这里我们window.toJs是我们HTML中的方法,传入了我们的EditText中的字符串,然后显示到我们的HTML上面。
最后我们将WebView调用Java方法和Java调用JS方法的运行结果如下:
☛总结
以上就是我们的详细的Android WebView和JS的交互的详细教程了,这里不是给你讲详细的在项目中的使用,而是教给大家原理,实际的项目中怎么使用,那就要视具体的项目而定,我想很多WebView混合开发的老铁就知道,WebView其实有很多的坑的,下面我就说几个常见的坑。
WebView常见的坑
API 16以前没有限制addJavascriptInterface的方法,我们可以通过反射的方法执行Java对象的方法,别有用心之人,就可以利用这个安全性问题来给你的APP植入广告等等。
我们经常WebView是动态添加到布局容器中addView(webView)的方式,在销毁webview时要先remove掉webview,再销毁。因为不及时的销毁很有可能导致内存泄漏的问题
经常我们加载网页的时候要判断网页是否加载完成,通常使用的是webViewClient.onPageFinished方法,但是我们实际中最好是使用webChromClient.onProgressChanged来判断,更加的精准。
webView在使用完之后要及时的销毁,不然会后台耗电
webView使用硬件加速,确实会使得的webview更加的流畅,但是有可能会导致界面闪烁、页面白块等,因此不开硬件加速是最快的解决方法。
webView会导致内存泄漏解决办法:
1.webView在一个独立的进程中运行,简单暴力,但是这种情况会有进程通信的问题。
2.尽量动态添加WebView ,对传入WebView中的context中使用弱引用。
☛总结
以上就是今天总结的WebView的相关的坑,如有不足之处欢迎指出。
温馨提示:
另外关注公众号,还有一些个人收藏的视频:
回复“学习资源” ,获取学习视频。
关注我,一定会有意想不到的东西等你:
领取专属 10元无门槛券
私享最新 技术干货