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