ASP源码.NET源码PHP源码JSP源码JAVA源码DELPHI源码PB源码VC源码VB源码Android源码
当前位置:首页 >> 低调看直播体育app软件下载 >> Android开发 >> React-Native系列Android——Native与Javascript通信原理(三)

React-Native系列Android——Native与Javascript通信原理(三)(1/7)

来源:网络整理     时间:2016-04-22     关键词:javascript,Android

本篇文章主要介绍了"React-Native系列Android——Native与Javascript通信原理(三)",主要涉及到javascript,Android方面的内容,对于Android开发感兴趣的同学可以参考一下: 前面两篇博客,详细分析了Native与Javascript通信的过程,可以满足绝大部分场景下Native和Javascript的相互调用,但是仍然有不健全的情况...

前面两篇博客,详细分析了Native与Javascript通信的过程,可以满足绝大部分场景下Native和Javascript的相互调用,但是仍然有不健全的情况。

比如Javascript层要实时获取Native的一些状态,就需要Native被动地向Javascript层通信了。这个过程区别于通信第一篇中Native主动向Javascript层通信,本篇博客就来研究下这样一个被动回调的过程!

在阅读本篇博客前,希望能回顾下前两篇。

React-Native系列Android——Native与Javascript通信原理(一)
http://blog.csdn.net/megatronkings/article/details/51114278

React-Native系列Android——Native与Javascript通信原理(二)
http://blog.csdn.net/megatronkings/article/details/51138499

首先,从一个常用的场景开始分析。

假设前端开发者在Javascript的代码中想要获取APP的状态,比如APP是否是处于前台(active),还是后台(background)。大概有两种实现方式:
1、Native 在APP每次状态切换的时候,调用callFunction将最新的状态传给Javascript层,然后由Javascript缓存起来,这样开发者想要获取状态可以能直接使用这个缓存的值。
2、前端开发者在Javascript中想要获取状态时,先向Native端发起通信请求,表示想获取状态,然后由Native端把这个状态作为通信应答返给Javascript层。

这两种方案都有各自的使用性场景,并且在React-Native都有相应实现。第一种实现对开发者来说相对简单,直接取缓存值,是一个完全同步的过程。第二种实现向Native发起通信请求,需要等待Native的应答,是一个异步的过程。

第一种方案实现原理在React-Native系列Android——Native与Javascript通信原理(一)中已经详细分析过了,不再赘述,本篇博文重点来分析下第二种方案的实现原理。


1、JavaScript的请求

Native与JavaScript的通信,都是由Native主动发起,然后由JavaScript应答,但是JavaScript是无法向Native主动发起通信的。那么,JavaScript如何才能向Native发起通信请求呢?

上一篇博文中讲过,JavaScript应答Native是通过将应答数据包装成JSON格式,然后在flushedQueue() 返给Bridge再返给Native的。如果JavaScript在这个应答信息加入通信请求的标识,那么Native在解析应答信息时发现了其中包含JavaScript的通信标识,然后Native来应答这个请求,这样不就完成了一次JavaScript请求Native的过程吗?

第一步:在返给Native的应答信息中加入JavaScript的通信请求

同样以在Javascript中获取APP当前状态为例,示范代码如下:

相关图片

相关文章