JsBridge

一、在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对双方消息传递的使用。所以此文不通用。

参考

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容