Android WebView上实现JavaScript与Java交互
2016-09-22 15:11
633 查看
其实webview加载资源的速度并不慢,但是如果资源多了,当然就很慢。图片、css 、js 、html这些资源每个大概需要10-200ms ,一般都是30ms就ok了。不过webview是必须等到全部资源都完成加载,才会进行渲染的,所以加载的速度很重要!从Google上我们了解到,webview加载页面的顺序是:先加载html,然后从里面解析出css、js文件和页面上的图片资源进行加载。如果webkit的缓存里面有,就不加载。加载完这些资源之后,就进行css的渲染和js的执行。Css的渲染一般不需要很长时间,几十毫秒就ok。关键是js的执行,如果用了jQuery,则执行起来需要5-6秒。而在这段时间,如果不在webview里设置背景,网页部分是白色的,很难看。这是一个很糟糕的用户体验。所以#欧#柏泰#克建议如果用网页布局程序,最好别用那些庞大的js框架。最好使用原生的js写业务脚本,以提升加载速度,改善用户体验。
在混合开发中,有时会用到安卓原生SDK,如调用相机、查看相册、录音等,这就需要web页面中的JavaScript能调用到安卓SDK接口。由于Android的WebView是基于webkit内核的,集成了js与java互调的接口函数,可以方便地进行开发使用。
界面布局xml:
?
java代码:
?
其中:有几点必须注意的,网上早期关于WebView的描述中,有几点变化。1)安卓4.2以上的版本中使用WebView实现Java与Js互调,java接口需要声明@JavascriptInterface ; 2)WebView要调用setWebChromeClient(),以适应Js等弹窗等实现;3)addJavascriptInterface中绑定的接口中调用JavaScript接口,需要开启子线程来调用(报错:Caused by: java.lang.Throwable: A WebView method
was called on thread 'JavaBridge'. All WebView methods must be called on the same thread. );
HTML代码:
?
以上html文件,其中javaInterface就是webView中addJavacriptInterface()方法中注入的接口入口名称,通过该名称就可以直接调用Java中的接口。(该html页面需要保持到项目assets目录中,由webView.loadUrl("file:///android_asset/index.html")来加载);
效果图:
![](http://files.jb51.net/file_images/article/201603/2016031710432011.png)
其中,对话框弹出:网址为"file://"的网页显示:,如果是服务器上的web页面就会显示源IP地址等等,显然不是我们想要的。下一篇,我们可以重写WebChromeClient来修改对话框、确认框等webView的优化。
以上内容是针对Android WebView上实现JavaScript与Java交互的全部内容,希望对大家有所帮助!
在混合开发中,有时会用到安卓原生SDK,如调用相机、查看相册、录音等,这就需要web页面中的JavaScript能调用到安卓SDK接口。由于Android的WebView是基于webkit内核的,集成了js与java互调的接口函数,可以方便地进行开发使用。
界面布局xml:
?
?
was called on thread 'JavaBridge'. All WebView methods must be called on the same thread. );
HTML代码:
?
效果图:
![](http://files.jb51.net/file_images/article/201603/2016031710432011.png)
其中,对话框弹出:网址为"file://"的网页显示:,如果是服务器上的web页面就会显示源IP地址等等,显然不是我们想要的。下一篇,我们可以重写WebChromeClient来修改对话框、确认框等webView的优化。
以上内容是针对Android WebView上实现JavaScript与Java交互的全部内容,希望对大家有所帮助!
相关文章推荐
- android学习笔记(1)--布局管理器
- android中dip、dp、px、sp和屏幕密度
- Android Thread.setDaemon设置说明
- 学习Android CoordinatorLayout(一)
- android 部分手机拍照后在imageView中显示预览图片被旋转的问题
- android 对多点触碰缩放imageview的大小,和手势滑动移动view位置的思考
- Android Socket连接PC出错问题及解决
- Android Bitmap压缩方法的选择详解
- Android组件08—拖动条SeekBar和RatingBar
- Android之SurfaceView使用总结
- Android美工坊--底部菜单栏实现
- Android WebView 总结 —— 使用HTML5播放视频及全屏方案
- Android 中利用反射访问private修饰的字段和方法
- android小技巧之---获取状态栏高度
- Android 中LayoutInflater的使用!
- android 流布局(根据内容宽度自动换行的布局)
- 自定义ScrollEditText,解决ScrollView中嵌套EditText的问题
- Android常用名令集锦(图文并茂)!
- 查看Android系统是User模式还是Eng模式
- Android沉浸式(侵入式)标题栏(状态栏)Status(二)