author=“jolting”
date=“2018-07-27”
今天开发人员进行知识分享,分享主题是:安卓原生与H5的交互,开发讲的什么方法调用啥的,没记住,也想着不用去了解,大致了解一下webview,分享结束还有许多疑问,然后自己回忆整理了一下,有什么不对的欢迎指出
1.webview是什么?作用是什么?和浏览器有什么关系?
Webview 是一个基于webkit引擎,可以解析DOM 元素,展示html页面的控件,它和浏览器展示页面的原理是相同的,所以可以把它当做浏览器看待。(chrome浏览器也是基于webkit引擎开发的,Mozilla浏览器是基于Gecko引擎开发的)
Android的Webview在低版本和高版本采用了不同的webkit版本内核,4.4后直接使用了Chrome。
2.webview主要用于什么地方?或者说什么需求下会使用到webview?
个人理解,电脑上展示html页面,通过浏览器打开页面即可浏览,而手机系统层面,如果没有webview支持,是无法展示html页面,所以webview的作用即用于手机系统来展示html界面的
所以它主要在需要在手机系统上加载html文件时被需要
3.一个原生应用调用html页面的过程?
1.原生应用加载html页面(加载页面的方式可能有多种,比如加载本地写好的html文件,或者放置在服务器的文件)
2.加载完成,展示就是通过webview来渲染展示的,如果系统没有webview,则是无法渲染展示html的
3.1,2步其实一个原生应用调用html页面过程已经完成了,那么页面不光展示,有时候可能还需要交互,这里的话就需要写一些方法了,比如html界面的按钮需要调用系统原生的东西(比如:拍照,系统的文件,相册之类的)。原生端就负责维护html调用的接口,然后按照需要返回(原生端充当一个server的角色,html充当一个client角色)
4.使用webview的好处?
原生APP是将页面的布局设计,以及业务代码打包然后用户下载安装使用,而webview是通过加载html文件来进行页面的展示,当需要更新页面布局的或者业务逻辑变更时,如果是原生的APP就需要修改前端内容,升级打包,重新发布才可以使用最新的。
而通过webview方式的页面则只需要修改html代码或者js文件(如果是从服务器端获取,只要新的文件部署完成),用户重新刷新就可以使用更新后的,无需通过下载安装的方式完成升级
5.安卓系统内置浏览器,自带浏览器?内置浏览器和自带浏览器是一个概念?
引用开发回答给我的:安卓系统内置浏览器和我们在手机中用的浏览器App(如uc浏览器,google浏览器,QQ浏览器)不是一个概念,webView是Google 官方为开发者提供的一个浏览器控件,我们开发者可以集成到App中,而我们用的各个厂商的App浏览器产品好多并不是用的谷歌官方提供的webView控件,他们集成的都是经过自己深度定制了的类似webView这么个东西。
①基于第一句:我的疑问是在网络上看有说:国内安卓系统是没有内置chrome,国外的话可能会内置chrome
开发回答:“说错了,没有内置一说,国内是没有内置的浏览器,我刚才说的内置的指的是谷歌官方提供给开发者的浏览器内核,当然能开发浏览器内核的当然不止谷歌,还有很多其他第三方厂商”
②基于最后一句话,我的理解是:主流的浏览器比如UC,都是基于webkit引擎的 webview的引擎话也是webkit 可以理解为webview和各大浏览器相当于属于不同的控件?
开发回答:对,就是这么个道理
至此webview,内置浏览器,以及自带浏览器的概念就有了大致的了解了
国内手机的自带浏览器不是chrome,主要是版权的原因,自带的浏览器都是手机厂商基于国内主流的几大浏览器自己定制,然后发布在自己手机系统版本中.不过国内几大浏览器厂商如QQ浏览器,UC浏览器、都是基于webkit引擎的
iphone的自带浏览器是Safari,Safari浏览器的内核是webkit
6.APP webview展示的页面和通过手机浏览器打开的页面?
基于6,不管是ios还是安卓,自带浏览器底层都是基于webkit的,然后各自系统中均带有webview控件,也是基于webkit引擎,所以不管通过APP调用webview展示html页面还是通过在浏览器打开html页面,效果是一样的。