Android Hybrid开发
2016-03-04 13:41
267 查看
参考:谈谈Android App混合开发
Html 5和Native的交互
WebView本来就支持js和Java相互调用,你只需要开启
WebView的JavaScript脚本执行,
然后通过代码
mWebView.addJavascriptInterface(new JsBridge(), "bxbxbai");
向Html 5页面时注入一个Java对象,然后就可以在Html 5页面中调用Native的功能了
微信怎么做的
微信应该是Hybrid 开发做的最好的App之一,它是怎么做交互的呢?答案就是
微信JS-SDK,去微信开发者文档中可以看到,微信JS-SDK封装了各种微信的功能,
比如分享到朋友圈,图像接口,音频接口,支付接口地理位置接口等等。
开发者只需要调用微信JS-SDK中的函数,然后统一由JS-SDK来调用微信中的功能,
这样好处就是我写了一个Html 5的应用或网页,在Android和iOS的微信中都可以正常运行了
总结
一般来讲,也是我目前知道的两种主流的方式就是js调用Native中的代码
Schema:WebView拦截页面跳转
第2种方式实现起来很简单,但是一个致命的问题就是这种交互方式是单向的,Html 5无法实现回调。
像云音乐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是肯定不行的
相关文章推荐
- (2016.5.26更新8.0.1失效问题)Android Studio上使用Butterknife注解框架与插件Android Butterknife Zelezny
- ImageView.ScaleType /android:scaleType值的意义区别
- Android4.4关机菜单添加重启系列选项
- Android,与北岛的诗
- Android错误解决方法集锦
- Gitlabr如何设置邮件提醒?
- Android内存泄漏(3)
- [AndroidAnnotations框架]AndroidAnnotations的配置
- android-USB-OTG 外部设备通讯 USB插拔检测
- Android开发环境搭建
- Android 切换系统语言功能实现
- Android读写assets目录下面的资源文件(文件夹)
- android文件读取asse 4000 ts
- Android Theme
- Android ButterKnife绑定控件为null
- android assets的使用
- android smali入门之HelloWorld
- android仿ListView By ViewGroup麻烦大牛帮忙 优化下
- andriod 资源文件的分类和作用
- android 颜色管理