项目中为了减少端上开发量,通常会使用一些跨平台的解决方案,而 web 就是最简单、兼容性最强的方案,但 web 又受制于浏览器,不能直接访问系统的一些属性,而且我们也需要 web 调用 native 的一些方法,所以我们需要一套 web 和 native 双向交互的方案。 目前,Android 要实现与 web 交互有以下几种常用方案: WebView addJavascriptInterface方法 拦截自定义协议链接实现数据交换 实现 prompt,console等原生方法来数据交互 方案一是官方推荐实现方案,但是在 android 4.2以下存在严重安全漏洞,而且和 JS 交换的数据仅仅局限于基本类型(int,float,double,String 等),不支持直接 JS 函数调用和回调(需要通过注入 JS 支持)
webView
标签: webView
webview与javascript交互回调与异步
传送门: webview与javascript基本交互方法请看这里:android-webview与javascript交互 webview与javascript异步回调实现方案:android-webview与javascript交互 * * 1.在javascript中回调java代码内容 在java方法重直接返回值就行 @JavascriptInterface public String getUserName() { try { Thread.sleep(5000); } catch (InterruptedException e) { e.printStackTrace(); } return "pengwei08"; } 在javascript中可以直接使用 hello world var username = window.jsBridge.getUserName(); var h2 = document.getElementById("h2"); h2.innerHTML = username; 注意 在javascript这样写是同步的,直到window.jsBridge.getUserName()返回值js才会直接执行下去,在java代码重getUserName中线程休眠了5s,在javascript中window.jsBridge.getUserName()也需要等待5s才会继续往下执行。
提高android webView运行效率
当我们在使用WebView时,如果加载的网页比较大,加载速度将非常慢。 现总结几种加速WebView加载的方法 1、提高渲染的优先级webView.getSettings().setRenderPriority(RenderPriority.HIGH); 2、使把图片加载放在最后来加载渲染 webView.getSettings().setBlockNetworkImage(true); 3,使用硬件加速,该功能在Android 3.0 (API level 11)才加入。 参考:http://developer.android.com/guide/topics/graphics/hardware-accel.html