[Cordova学习]5.Cordova(android)架构和实现

JS和Native的通信方式

从JS到Java通信方式有2种。

  • addJavascriptInterface方法JS_OBJECT(默认)

 →参数是直接从JS传到Java对象的。同步处理方式。
   

  • js的prompt方法

 →①Android2.3的虚拟机使用addJavascriptInterface的时候存在BUG,则可以使用prompt方法。
   ②addJavascriptInterface不支持的情况下(内存中不存在Cordova定义的JAVA对象_cordovaNative的时候)、自动转到prompt方法使用。
   有些机器(Galaxy2 Android4.1)的addJavascriptInterface的返回参数不支持,则自动转换为prompt方法。
    并且JS_OBJECT的返回值的参数不存在的情况下,自动再实行一遍Prompt方法。
通信模式是根据环境不同自动切换以外,还可以自己指定:在deviceReady事件执行后可以进行设置。


var exec = cordova.require('cordova/exec'); 
exec.setJsToNativeBridgeMode(exec.jsToNativeModes.JS_OBJECT);

var exec = cordova.require('cordova/exec'); 
exec.setJsToNativeBridgeMode(exec.jsToNativeModes.PROMPT);

从Java到JS通信有4种方式  ,经常使用的是Polling方法和ONLINE_EVENT 
・Polling方法 (异步方法)    
 →50msJSTimer进行轮询,判断JAVA侧有没有JS的回调方法

・LOAD_URL方法    
→webView.loadUrl("javascript:")的方法、 
为了修改一个[送信后软键盘消失]的BUG

・ONLINE_EVENT方法(默认方法)    
 →网络的在线离线事件监视。
  在事件回调中执行一次POLLING的方法。不使用JSTIMER轮询。
 
・PRIVATE_API方法    
 →Webviewの私有方法进行反射

这些通信模式需要指定的情况下在deviceReady事件之后执行

var exec = cordova.require('cordova/exec'); 
exec.setNativeToJsBridgeMode(exec.nativeToJsModes.LOAD_URL);

var exec = cordova.require('cordova/exec'); 
exec.setJsToNativeBridgeMode(exec.nativeToJsModes.jPRIVATE_API);




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值