JsBridge

作者: liaowenhao | 来源:发表于2017-08-27 09:23 被阅读18次

一、在Android开发中,能实现Js调用Native,有4种方法:

  1. JavascriptInterface
  2. WebViewClient.shouldOverrideUrlLoading()
  3. WebChromeClient.onConsoleMessage()
  4. WebChromeClient.onJsPrompt()

二、JsBridge
1.协议
Js调用Native所遵循的协议

jsbridge://className:port/methodName?jsonObj

className:指定native层要完成某个功能调用的类名
methodName:指定native层要完成某个功能调用的方法名
jsonObj:js传递过来的参数
port:port值是指当native需要将操作结果返回给js时,在js中定义一个callback,并将这个callback存储在指定的位置上,这个port就定义了callback的存储位置。

2.原理
Js调用Native是通过window.prompt(url);

Native调用Js是通过WebView.loadUrl("javascript:function()");。

Js调用Native: 通过WebView.loadUrl("javascript:function()");

Native调用Js: 通过window.prompt(url)调用WebChromeClient中的onJsPromot方法,然后通过HashMap找到Native中相应方法进行反射调用。Java将处理结果通过Js带来的Callback,通过loadUrl方式回传给Js。

Js与Native间的Callback可通过Handler进行消息传递。CallBack类是用来回调Js中回调方法的Java对应类,通过拥有主线程Looper的Handler回调给Js动作。

  1. 备注
    鉴于不同的JsBridge的实现方式不同,主要区别在于Js调用Native以及Handler/MessageQueue对双方消息传递的使用。所以此文不通用。

参考

相关文章

网友评论

      本文标题:JsBridge

      本文链接:https://www.haomeiwen.com/subject/sldbdxtx.html