美文网首页
JsBridge源码分析

JsBridge源码分析

作者: 白六小子 | 来源:发表于2021-08-08 21:57 被阅读0次

二、开源JsBridge

项目地址:https://github.com/ytuglt/JsBridge

通信的数据结构

public class Message {

    private String callbackId;  // h5接收自己发起调用的对应回调句柄
    private String responseId;  // Native发起调用,h5返回的回调句柄
    private String responseData; // Native给h5回调的数据
    private String data;   // Native与h5通信的数据
    private String handlerName; // 调用方法名
}

流程:

  1. 注入流程
    1. Native调用registerHandler将供h5调用的方法注册至messageHandlers这个HashMap<String, BridgeHandler>中,等待h5调用
    2. WebViewClient 在onPageFinished回调时,Native向h5注入WebViewJavascriptBridge.js文件
    3. js文件注入完成直接分发初始化Message
  2. Native调h5流程:webView.loadUrl
    1. 如果异步回调,根据增长id、时间戳生成CallBackId,并存储至responseCallbacks这个HashMap<String, CallBackFunction>
    2. 将data,handlerName,callBackId生成Message
    3. 将Message转Json做参数,主线程webView.loadUrl调用前端_handleMessageFromNative方法
  3. Native处理h5调用:shouldOverrideUrlLoading(String str)
    1. 如果url是yy://return/开头,则是Native调h5之后的回调,直接取对应responseCallbacks里的value回调
    2. 解析str转成Message
      1. 如果有responseId,则是Native调h5之后的回调,取对应responseCallbacks中的value执行回调后,从responseCallbacks中移除。
      2. 剩下的就是h5主动调Native:
        1. 如果有callbackId则是h5异步调用,需要回调,生成callBackFunction
        new CallBackFunction() {
            @Override
            public void onCallBack(String data) {
                Message responseMsg = new Message();
                responseMsg.setResponseId(callbackId);
                responseMsg.setResponseData(data);
                queueMessage(responseMsg);
            }
        };
        
        1. 根据HandlerName从messageHandlers中找到对应Handler,执行handle方法
        void handler(String data, CallBackFunction function)
        

相关文章

  • JsBridge源码分析

    参考:Android 与 JS 之 JsBridge 使用与源码分析demo地址:JsBridgeDemo今天分析...

  • Android-JsBridge-源码分析

    github:https://github.com/javalong/jsbridge 整体架构图 源码分析 下面...

  • jsBridge源码分析

    唉,又瞎jb聊去了。8月19日留。构思ing

  • jsbridge源码分析

    本文分析的是https://github.com/lzyzsd/JsBridge这个开源库, 网络上很多关于这个库...

  • JsBridge 源码分析

    源码:https://github.com/lzyzsd/JsBridge 1 背景 近年来混合框架很火,一些大型...

  • JsBridge源码分析

    客户端、H5注册 客户端 在BridgeWebView的初始化方法中,添加了自定义的BridgeWebViewCl...

  • JsBridge源码分析

    二、开源JsBridge 项目地址:https://github.com/ytuglt/JsBridge[http...

  • [源码探究]Android JsBridge源码学习

    Android JsBridge源码学习 众所周知Android 4.2以下的WebView存在addJavasc...

  • JsBridge源码解析

    我们知道在 WebView 的使用中,WebView 与 Js 代码的交互是非常重要的一部分,在上篇文章 WebV...

  • JsBridge源码剖析

    JsBridge是Hybrid项目中一种实现H5与Native两者之间通讯的成熟、安全的解决方案。 基础原理 Js...

网友评论

      本文标题:JsBridge源码分析

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