Android WebView和JS交互详细教程

我们的态度是:每天进步一点点,理想终会被实现。

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的相关的坑,如有不足之处欢迎指出。

温馨提示:

另外关注公众号,还有一些个人收藏的视频:

回复“学习资源” ,获取学习视频。

关注我,一定会有意想不到的东西等你:

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180629G08K7A00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券