> hybrid,native原生Android和h5混合开发
Android中使用WebView与JS交互全解析-http://blog.csdn.net/u012124438/article/details/53371102 , http://blog.csdn.net/jdsjlzx/article/details/51376739
为WebView中的Java与JavaScript提供【安全可靠】的多样互通方案- https://github.com/pedant/safe-java-js-webview-bridge
浅谈Hybrid技术的设计与实现第三弹——落地篇 - http://www.cnblogs.com/yexiaochai/p/5813248.html
移动混合应用Hybrid App开发实战 - http://mobile.51cto.com/web-460529.htm
Android中Java和JavaScript交互- http://droidyue.com/blog/2014/09/20/interaction-between-java-and-javascript-in-android/index.html
> 三种不同的解决方案
方案一:使用PhoneGap、AppCan之类的中间件,以WebView作为用户界面层,以Javascript作为基本逻辑,以及和中间件通讯,再由中间件访问底层API的方式,进行应用开发。这种架构一般会非常依赖WebView层的性能。
方案二:使用Adobe Air、RubyMotion、Appcelerator或者是Xamarin这种非官方语言的工具,打包成原生应用的方式开发。为什么笔者会将它们定义 为Hybrid App,主要是它们并没有很单纯地使用原生提供的语言进行开发,而是通过对开发者提供友好的开发工具,并折中地把这种开发语言转换成原生语言,最终打包出 整个应用,所以也属于混合应用范畴。
方案三:在开发原生应用的基础上,嵌入WebView但是整体的架构使用原生应用提供,一般这样的开发由Native开发人员和Web前端开发人员 组成。Native开发人员会写好基本的架构以及API让Web开发人员开发界面以及大部分的渲染。保证到交互设计,以及开发都有一个比较折中的效果出 来,优化得好也会有很棒的效果。(当年Facebook Three20就使用该方案)
> webview有两个方法:setWebChromeClient 和 setWebClient.
setWebClient:主要处理解析,渲染网页等浏览器做的事情,WebViewClient就是帮助WebView处理各种通知、请求事件的。
setWebChromeClient:辅助WebView处理Javascript的对话框,网站图标,网站title,加载进度等
hybrid,主要意思就是native原生Android和h5混合开发。对于native端来说只要使用对应的容器去展示就可以了(对于Android来说这个容器当然就是WebView)。
何为hybrid,我们来思考下面几个场景: 场景1:前端那边的页面有一个按钮,点击这个按钮需要显示一个native的组件(比如一个toast),或者点击这个按钮需要去在native端执行一个耗时的任务。 场景2:还是前端页面有一个按钮,点击这个按钮的逻辑是:如果登录了,则跳转到相应的界面,如果没有登录,则跳转到登录界面。而这个登录界面是我们native维护的。 看完上面两个场景,相信大家也发现了一个问题,hybrid这样的开发方式有一个问题需要解决,那就是前端和本地的通信。 Hybrid项目交互协议: ① URL Schema ② JavaScriptCore 适合Hybrid的项目为: ① 有60%以上的业务为H5 ② 对更新(开发效率)有一定要求的APP 不适合使用Hybrid技术的项目有以下特点: ① 只有20%不到的业务使用H5做 ② 交互效果要求较高(动画多) 任何技术都有适用的场景,千万不要妄想推翻已有APP的业务用H5去替代,最后会证明那是自讨苦吃,当然如果仅仅想在APP里面嵌入新的实验性业务,这个是没问题的。 一般来说,一个公司的账号体系健壮灵活程度会很大程度反映出这个研发团队的整体实力: ① 统一的鉴权认证 ② 短信服务图形验证码的处理 ③ 子系统的权限设计、公共的用户信息导出 ④ 第三方接入方案 ⑤ 接入文档输出 ⑥ ......