Android Hybrid开发

参考:谈谈Android App混合开发

Html 5和Native的交互

WebView 原本就支持js和Java相互调用,你只须要开启 WebView 的JavaScript脚本执行,java

而后经过代码 mWebView.addJavascriptInterface(new JsBridge(), "bxbxbai"); git

向Html 5页面时注入一个Java对象,而后就能够在Html 5页面中调用Native的功能了github

微信怎么作的

微信应该是Hybrid 开发作的最好的App之一,它是怎么作交互的呢?web

答案就是 微信JS-SDK ,去微信开发者文档中能够看到,微信JS-SDK封装了各类微信的功能,微信

好比分享到朋友圈,图像接口,音频接口,支付接口地理位置接口等等。网络

开发者只须要调用微信JS-SDK中的函数,而后统一由JS-SDK来调用微信中的功能,微信开发

这样好处就是我写了一个Html 5的应用或网页,在Android和iOS的微信中均可以正常运行了框架

总结

通常来说,也是我目前知道的两种主流的方式就是函数

  1. js调用Native中的代码
  2. Schema:WebView拦截页面跳转

第2种方式实现起来很简单,可是一个致命的问题就是这种交互方式是单向的,Html 5没法实现回调。ui

像云音乐App中这种点击跳转到具体页面的功能,Schema的方式确实能够简单实现,并且也很是适合。

若是需求变得复杂,假如Html 5须要获取Native App中的用户信息,那么最好使用js调用的方式。

一种开源的解决方案

Cordova是Apache的一个开源解决方案,不过它须要xml配置 CordovaPlugin 信息,使用会比较麻烦,并且这个框架很重,具体请自行搜索Cordova使用教程

下面这个开源项目是我我的以为比较合理的解决方案,也比较轻量级,下图就是一个Demo

https://github.com/pedant/safe-java-js-webview-bridge

Hybrid开发适用于哪些功能

本文讲的Hybrid开发就是Native客户端中嵌入了Html App的功能,这方面微信应该是作的最好的,

因为Html 5的效率以及耗电问题,我我的以为用户是不能知足Web App的体验的,Hybrid App也只适用于某些场景。

一些基础的功能,好比调用手机的摄像头,获取地理位置,登陆注册功能等等,作成Native的功能,比让Html 5来调用更好,这样的体验也更好。

若是你把一个登陆和注册功能也作成Html 5,在弱网络环境下,这个体验应该会很是的差,或许你等半天还没加载出页面。

你可能会说,我能够预先加载Html 5的代码,打开App时直接加载,那么我说你在给本身找麻烦,若是要这样的话,Native开发或许更快一点。

那么什么状况适合Html 5开发呢?像一些活动页面,好比秒杀、团购等适合作Html 5,由于这些页面可能涉及的很是炫并且复杂,Html 5开发或许会简单点,关键是这些页面时效性短更新更快,由于一个活动说不定就一周时间,下周换活动,若是这样的话,你还作Native是确定不行的

相关文章
相关标签/搜索