Android 使用 WebView 实现 Hybrid 的思路导引

简介: Android 使用 WebView 实现 Hybrid 的思路导引 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循“署名-非商业用途-保持一致”创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS、Android、Html5、Arduino、pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作。

Android 使用 WebView 实现 Hybrid 的思路导引

太阳火神的美丽人生 (http://blog.csdn.net/opengl_es)

本文遵循“署名-非商业用途-保持一致”创作公用协议

转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS、Android、Html5、Arduino、pcDuino否则,出自本博客的文章拒绝转载或再转载,谢谢合作。



首先看一下标题中的 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传教士们给忽略了,有一种情况是,这些传教士们不是技术出身,往往把这些边缘的看似一语带过的说明给当成可有可无的了,然后,对于这种精要的软件过程方法总结来说,前面的往往是一堆细节描述,而最后的一言两语才是重中之重,与我们中国人的表述方式确实有很大差异,我们中国人说话,养成的习惯是先做个大引子,阐明大思想,然后再逐一论证说明,或许最后还有一个补充;又或者中国人爱用序号来给一篇文章内容进行内容组织,而外国人(可能是英语语系的人吧,我也不太清楚)更爱用无序号的文章排序方式,无拘无束可能是他们的天性,而我们天朝之邦,规矩最为重要,所以做起事情来,都循规蹈矩的进行。

这一段有点不太小,确倒出一个敏捷开发的方法和思考问题的习惯,并不代表这样适合一切情况,我更喜欢做工作时,这样来做,做完工作,我更喜欢用中国式的总结方式来把这一工作涉及的知识再进一步加深、扩展研究一翻,形成一个立体的知识体系,放在我的脑子里,再尽可能与其它已知内容做以联系。

其实人之所以爱遗忘,不是你的磁盘里没有这份记录了,而是你的索引方式太单一,当这一索引在被损坏或其它数据误占后,你就再也找不到这份数据了;试想,你总会在过了很久之后,突然想起了很早以前曾想找到的一份数据,那是因为你碰巧读取到了你头脑中的这块磁盘空间,再激发出来的。

可能,人的思维是索引的存储位置,潜意识是索引指向的内容存储区,也许吧,瞎猜猜,不过合情不一定合理。


接下来的界面部分,就按上面的说法,先不研究,研扔下来,只占个位置


一、界面布局及效果


下午上班时间到了,先写到这里,有空儿继续完善......





目录
相关文章
|
API Android开发 数据安全/隐私保护
解决android webview 加载http url 失败 net::ERR_CLEARTEXT_NOT_PERMITTED 错误
解决android webview 加载http url 失败 net::ERR_CLEARTEXT_NOT_PERMITTED 错误
1002 0
|
2月前
|
程序员 开发工具 Android开发
Android|WebView 禁止长按,限制非白名单域名的跳转层级
如何限制 WebView 仅域名白名单网址能随意跳转,并禁用长按选择文字。
34 2
|
6月前
|
安全 JavaScript 前端开发
kotlin开发安卓app,JetPack Compose框架,给webview新增一个按钮,点击刷新网页
在Kotlin中开发Android应用,使用Jetpack Compose框架时,可以通过添加一个按钮到TopAppBar来实现WebView页面的刷新功能。按钮位于右上角,点击后调用`webViewState?.reload()`来刷新网页内容。以下是代码摘要:
|
6月前
|
JavaScript 前端开发 Android开发
kotlin安卓在Jetpack Compose 框架下使用webview , 网页中的JavaScript代码如何与native交互
在Jetpack Compose中使用Kotlin创建Webview组件,设置JavaScript交互:`@Composable`函数`ComposableWebView`加载网页并启用JavaScript。通过`addJavascriptInterface`添加`WebAppInterface`类,允许JavaScript调用Android方法如播放音频。当页面加载完成时,执行`onWebViewReady`回调。
|
6月前
|
Web App开发 移动开发 前端开发
52. 【Android教程】网页视图:WebView
52. 【Android教程】网页视图:WebView
93 1
|
5月前
|
Web App开发 JavaScript 前端开发
Android端使用WebView注入一段js代码实现js调用android
Android端使用WebView注入一段js代码实现js调用android
125 0
|
6月前
|
安全 网络安全 API
kotlin安卓开发JetPack Compose 如何使用webview 打开网页时给webview注入cookie
在Jetpack Compose中使用WebView需借助AndroidView。要注入Cookie,首先在`build.gradle`添加WebView依赖,如`androidx.webkit:webkit:1.4.0`。接着创建自定义`ComposableWebView`,通过`CookieManager`设置接受第三方Cookie并注入Cookie字符串。最后在Compose界面使用这个自定义组件加载URL。注意Android 9及以上版本可能需要在网络安全配置中允许第三方Cookie。
|
7月前
|
XML Android开发 数据格式
安卓和webview交互
安卓和webview交互
61 0
|
7月前
|
XML Android开发 数据格式
安卓和webview交互
安卓和webview交互
103 1
|
小程序 Android开发 iOS开发
在钉钉小程序中安卓无法打开webview
在钉钉小程序中安卓无法打开webview
208 1