cordova框架是android,Apache Cordova-Android框架原理研究筆記 II

上一篇筆者簡要分析了Cordova從JS端->Native端的調用過程(以JS Object橋為例)。本章讓我們來分析下這個過程的反面,也就是從Native端->JS端,Cordova是如何處理的。

老習慣,我們先看一段代碼:

exec.jsnativeToJsModes = {

// Polls for messages using the JS->Native bridge.

POLLING: 0,

// For LOAD_URL to be viable, it would need to have a work-around for

// the bug where the soft-keyboard gets dismissed when a message is sent.

LOAD_URL: 1,

// For the ONLINE_EVENT to be viable, it would need to intercept all event

// listeners (both through addEventListener and window.ononline) as well

// as set the navigator property itself.

ONLINE_EVENT: 2

}

可以看到Cordova實現了3中模式:POLLING、LOAD_URL和ONLINE_EVENT。筆者這里重點分析了第一種,也就是POLLING模式,后兩種有機會再做深入研究。下圖大致描述了這個過程。

ed2924c9b05057a0ddd2de9a0c9e83a8.png

總體來說,過程如下:

1、JS端調用Native API后,如果當前調用消息未處理完成,每隔50ms取一次消息隊列,直到本次調用的消息結束;

2、Native端的插件同樣維護了一個消息隊列;

3、JS端通過Native端暴露的retrieveMessages接口來實現消息的拉取;

另外,通過源代碼我們可以大致分析下Cordova的JS和Native兩端的消息格式大致協議:

1、* 號的消息表示當前Native端仍然有待處理消息,JS端會再拉取一次消息;

2、消息內容的第一個字符如果為S表示調用成功,F表示調用失敗;

其他的有興趣的可以對照代碼再做分析。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值