`

java 与JS 互调

 
阅读更多
  其实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写业务脚本,以提升加载速度,改善用户体验。
  Android 的 webview 是基于 webkit 内核的,webview 中集成了js与java互调的接口函数,通过addJavascriptInterface方法,可以将Java的类注册进webkit,给网页上的js进行调用,而且还可以通过loadUrl方法是给webkit传递一个uri,供浏览器来进行解析,实现Java和js交互。
  要想运行网页上的js脚本,webview必须设置支持Javascript
Java代码  收藏代码
  1. mWebview.getSettings().setJavaScriptEnabled(true);  
  然后是设置webview要加载的网页:
    web的网页:webView.loadUrl("http://www.google.com"); 
    本地的网页:webView.loadUrl("file:///android_asset/XX.html");  //本地的存放在:assets文件夹中
  webview做完基本的初始化后我们还要要给它,加进一个回调的代理类JavaScriptInterface,并给它一个调用的名称:ncp
Java代码  收藏代码
  1. mWebView.addJavascriptInterface(new JavaScriptInterface(), "ncp");  
  JavaScriptInterface可以是一个普通的Java类,类实现的方法,均可被js回调:
Java代码  收藏代码
  1. final class JavaScriptInterface {   
  2.   
  3.        public int callOnJs() {  
  4.                           
  5.           return 1000;  
  6.        }  
  7.    
  8.        public void callOnJs2(String mode) {  
  9.          //TODO  
  10.        }  
  11.      
  12.   }  
  Java要调用js的方法,只需知道js的方法名称即可:
Java代码  收藏代码
  1. mWebView.loadUrl("javascript:onSaveCallback()");  

 

  js 这边就更简单:
Js代码  收藏代码
  1. <script type="text/javascript">  
  2.         window.onload = function(){  
  3.                 document.getElementById('btn_1').addEventListener('click', onBtnClick, false);  
  4.                 var _int_value = window.ncp.callOnJs();  
  5.                 alert("get int from java:" + _int_value );  
  6.         }  
  7.         function onBtnClick() {  
  8.                 window.ncp.callOnJs2("click");  
  9.         }  
  10.   </script>  

 

Java和js交互有以下一些特点:
 1.Java 调用 js 里面的函数,速度并不令人满意,大概一次一两百毫秒吧,如果要做交互性很强的事情,这种速度会让人疯掉的。而反过来就不一样了, js 去调 java 的方法,速度很快,基本上 40-50 毫秒一次。所以尽量用 js 调用 java 方法,而不是 java 去调用 js 函数。
 2.Java 调用 js 的函数,没有返回值,而 Js 调用 java 方法,可以有返回值。返回值可以是基本类型、字符串,也可以是对象。如果是字符串,有个很讨厌的问题,第 3 点我会讲的。如果是对象,这个对象会被转换为 js 的对象,直接可以访问里面的方法。但是我不推荐 java 返回给 js 的是对象,除非是必须。因为 js 收到 java 返回的对象,会产生一些交换对象,而如果这些对象的数量增加到了 500 或 600 以上,程序就会出问题。所以尽量返回基本数据类型或者字符串。
 3.Js 调用 Java 的方法,返回值如果是字符串,你会发现这个字符串是 native 的,不能对它进行一些修改操作,比如想对它 substr ,取不到。怎么解决呢?转成 locale 的。使用 toLocaleString() 函数就可以了。不过这个函数的速度并不快,转化的字符串如果很多,将会很耗费时间。
 
出处:http://zhiweiofli.iteye.com/blog/1900249
分享到:
评论

相关推荐

    java和js互调

    Java和JavaScript互调是移动应用开发中的一个重要概念,特别是在Android平台上。Android系统广泛使用Java作为主要的编程语言,而Web内容则通常由JavaScript处理。在许多情况下,开发者需要在原生Android应用中嵌入...

    Android中java与js互调例子

    总结起来,Android与JavaScript的互调主要依赖于`WebView`组件,通过`loadUrl()`执行JavaScript代码,`addJavascriptInterface()`暴露Java方法给JavaScript,以及`WebChromeClient`和`WebViewClient`的相关回调来...

    android中java和js互调

    在Android开发中,Java与JavaScript的交互是一种常见的需求,特别是在构建混合式移动应用时。这种交互使得我们可以利用JavaScript的灵活性和丰富的Web库,同时利用Java为Android提供的原生功能。以下将详细介绍Java...

    java与js互调jar包

    Android代码调用js不需要再依赖webview,直接引入此jar包即可,用java标准的js调用。

    android与JS互调

    在Android应用开发中,有时我们需要实现Android原生代码与JavaScript代码之间的交互,这通常被称为“Android与JS互调”。这种技术允许我们利用JavaScript的灵活性来处理部分用户界面逻辑,同时利用Android的系统级...

    webveiwjs与java互调

    通过以上讲解,你应该对`webviewjs与java互调`有了全面的理解,包括基本用法、JavaScript调用Java、Java调用JavaScript以及解决常见问题。希望这个`webviewDemo自己写的`能帮助你找到更多具体实践中的解决方案。在...

    java与js代码互调示例代码

    以上就是Java与JavaScript互调的相关知识点,包括在HTML5跨平台应用开发中的应用背景、Java代码调用JavaScript代码的方法、以及JavaScript代码如何调用Java代码的实现方式。这要求开发者不仅要掌握Java和JavaScript...

    Android与js互调

    本篇将详细讲解Android与JavaScript互调的原理、方法及应用示例。 首先,Android与JavaScript交互的核心是WebView组件,它是一个内置的浏览器引擎,可以加载并显示HTML页面。通过WebView,我们可以将JavaScript代码...

    Android与Js互调

    本篇主要介绍如何实现Android与JavaScript的互调,以及在Java和Js之间进行互相调用的方法。 首先,Android中的`WebView`组件是实现Android与JavaScript交互的基础。`WebView`是一个可以加载网页的视图,它可以解析...

    webview和js互调

    在实现WebView与JavaScript互调时,必须注意安全问题。JavaScript注入可能会受到XSS(跨站脚本攻击)的威胁,因此要确保暴露给JavaScript的接口不包含敏感操作。同时,避免在JavaScript中执行不可信的用户输入,以免...

    android原生与js互调

    总结,Android原生与JS互调是混合开发中的关键技术,通过Webview组件,我们可以充分利用两者的优势,实现更丰富的功能。了解并熟练掌握这一交互机制,对提升应用的用户体验和开发效率至关重要。

    webView js与java互调

    这篇博客文章 "webView js与java互调" 提到了如何在Android应用中实现JavaScript与Java之间的通信,这是移动应用开发中的常见需求,特别是在混合应用开发中。 首先,我们需要了解`WebView`的基本用法。在XML布局...

    Android Webview JS互调

    Android(Java)与JavaScript(HTML)交互有四种情况: 1) Android(Java)调用HTML中js代码 2) Android(Java)调用HTML中js代码(带参数) 3) HTML中js调用Android(Java)代码 4) HTML中js调用Android(Java...

    Android与JavaScript互调

    总之,Android与JavaScript的互调是一种强大的技术,可以将Android的系统功能与JavaScript的灵活性结合起来,创造出更多创新的交互方式。但同时也需要注意安全问题,确保应用的稳定性和用户数据的安全。

    Android与H5互调详细介绍

    Android与H5互调详细介绍  微信,微博,微商,QQ空间,大量的软件使用内嵌了H5,这个时候就需要了解Android如何更H5交互的了;...案例一:Java与Js简单互调  首先,在Android代码中加载H5页面: private void

    android与js的互调

    在Android开发中,Java与JavaScript的交互是一种常见的需求,特别是在混合式移动应用开发中,如使用WebView加载H5页面。本教程将详细讲解如何在Android的Java代码中加载JavaScript,并且让JavaScript能够调用Android...

    JS与Android互调Demo

    JavaScript(JS)与Android之间的互调是移动应用开发中的一个重要技术,它允许Web应用与原生Android应用进行深度集成,实现功能交互。本Demo旨在演示如何实现这一互调过程,以便开发者可以更好地理解和运用到实际...

    Android于js互调

    本文将详细讲解如何实现Android与JavaScript之间的互调,以及相关的技术要点。 首先,Android调用JavaScript主要通过WebView组件实现。WebView是Android提供的一种用于加载和显示网页的控件,它不仅能够加载本地或...

    ZR_JsBridgeDemo:android中webview与javascript互调

    `ZR_JsBridgeDemo-master`项目应该包含了实现这些功能的完整代码,你可以通过查看和学习这个项目,深入了解Android `WebView`与JavaScript互调的具体实现和应用场景。这包括但不限于加载本地HTML、处理点击事件、...

    WebView使用总结3(应用函数与JS函数互相调用)

    总的来说,Android的WebView提供的Java与JavaScript互调功能极大地扩展了应用的可能性,使得我们可以利用Web技术来丰富原生应用的功能,同时保持良好的性能和用户体验。理解并熟练运用这些技巧对于提升应用的交互性...

Global site tag (gtag.js) - Google Analytics