Android 使用 WebView 实现 Hybrid 的思路导引
太阳火神的美丽人生 (http://blog.csdn.net/opengl_es)
本文遵循“署名-非商业用途-保持一致”创作公用协议
首先看一下标题中的 Hybrid 一词的解释,我们取“混合的“这一解释。
在两年前,曾经有因 html5 的到来,而风及一时的 Hybrid 应用,不可谓好不潇洒。然而,随着试水的人多了,最终连 facebook 也放弃了这一快速构建移动应用的方式,转而做 native 应用来提高用户体验。
移动应用,通常有三种做法,一是native,二是hybrid,三是html页面;
下面回归正题,来看看如何让 native 这种 android 的本地代码与 html 页面中的 javascript 代码能各司其职,互相调用。
本文只涉及基本思路,有了这些基本思路,就等于找到了山体的最薄弱点,开了一个洞,剩下的事情就根据你的实际需要来加细就好了。
这种思路同样适用于 ios 上 WebView 组件与 objective-c 语言本地代码之间的交互,只不过 WebView 组件的使用方式和事件处理方式略有不同,可以参考对应用文档。
Android 应用相关的博文,无不例外,都是先把界面和布局的xml列出来,虽显俗套,不过清晰可见,稍涉繁琐之歉,我更喜欢先看后面,然后根据所看到的组件名,再上界面部分找相应的xml界面元素名以及界面上的显示效果,这种是否有”事件驱动“的意味?我可以暂且叫它”即需驱动“式的界面元素分析方式。
这里再插上那么一小段段费话,来总结一种学习或研究问题的思路方式:
早在2001年我刚接触 VC++ 6.0 开发环境时,一片茫然,后来发现茫然的不是VC++6.0工具本身,也不是C++语言,而是MFC库,当时局方还有一同事也在研究学习之,但他后来放弃了。总结起来,他是拿着一本厚厚的MFC的书从头到尾式的学习研究,而我是根据工作需要,搜点资料,研究一点,弄出来再说,回头再理解。这样MFC库对我来说就没那么庞大了,因为我不去研究它,只是用它对我有用的部分而已,甚至很多功能,最终我都是用WIN32 API来做或C++的函数或自已写。
无论怎样,我是坚持到了最后,纠其原因,可能就是这个”事件驱动“方式的功劳吧,有需要就研究一下需要的部分,而无需关心那么庞大的MFC库,这就是”事件驱动“的好处,虽有目光短浅之歉,但对于没有能力把眼光放远的阶段来说,还倒不如把目光集中在眼前,做好眼前之事。
另想说明敏捷开发中的”测试驱动“,其实和我这里提到的”事件驱动“应该是一个意思,只不过我这里的事件是一种偶然的无防备的事件,可能是公司业务有这种需要了,就要做这个事情,那么我们就要针对这个事情去研究一下相应的技术,实现相应的功能;而”测试驱动“中的测试就应该是做这个事情的一种具体做法,先明确要做的事情,以确定能满足业务需要,然后再编写出针对要做的事情的测试代码,接下来就是实现相应的功能,实现的过程中,以先前编写的测试来随时测试,只要满足要求了,目标就达到了,就无需再进行深入和扩展。
不过,”测试驱动“往往是一种提法,一种精髓的抽象,附着其上的还有很多细节,往往被忽略,致使形而上学害人不浅。
有些时侯测试是不太容易编写出来的,那么就编写个测试用例,手工测试,针对每一个必要的察看部分做以核对即可;
还有些时侯,往往仅达到测试的要求,并不能保证应用的稳定性和安全性,这可能是测试本身并没办法一次性完善,所以测试本身也是需要迭代的完善的。
敏捷开发,其实也是一个不断根据进行过程中的反馈 ,不断完善目标设定的一个过程,而且象Scrum本身也是有这样的说明的,但这种细节的看似不相关的部分,确被很多Scrum传教士们给忽略了,有一种情况是,这些传教士们不是技术出身,往往把这些边缘的看似一语带过的说明给当成可有可无的了,然后,对于这种精要的软件过程方法总结来说,前面的往往是一堆细节描述,而最后的一言两语才是重中之重,与我们中国人的表述方式确实有很大差异,我们中国人说话,养成的习惯是先做个大引子,阐明大思想,然后再逐一论证说明,或许最后还有一个补充;又或者中国人爱用序号来给一篇文章内容进行内容组织,而外国人(可能是英语语系的人吧,我也不太清楚)更爱用无序号的文章排序方式,无拘无束可能是他们的天性,而我们天朝之邦,规矩最为重要,所以做起事情来,都循规蹈矩的进行。
这一段有点不太小,确倒出一个敏捷开发的方法和思考问题的习惯,并不代表这样适合一切情况,我更喜欢做工作时,这样来做,做完工作,我更喜欢用中国式的总结方式来把这一工作涉及的知识再进一步加深、扩展研究一翻,形成一个立体的知识体系,放在我的脑子里,再尽可能与其它已知内容做以联系。
其实人之所以爱遗忘,不是你的磁盘里没有这份记录了,而是你的索引方式太单一,当这一索引在被损坏或其它数据误占后,你就再也找不到这份数据了;试想,你总会在过了很久之后,突然想起了很早以前曾想找到的一份数据,那是因为你碰巧读取到了你头脑中的这块磁盘空间,再激发出来的。
可能,人的思维是索引的存储位置,潜意识是索引指向的内容存储区,也许吧,瞎猜猜,不过合情不一定合理。
接下来的界面部分,就按上面的说法,先不研究,研扔下来,只占个位置
一、界面布局及效果
下午上班时间到了,先写到这里,有空儿继续完善......