AgentWeb三方android web开源库的理解和认识
来源:互联网 发布:node.js excel 编辑:程序博客网 时间:2024/06/10 09:53
目前h5三方库很少,开源的也很少,比较主流点的就是AgentWeb和腾讯x5的一个Web库(AgentWebX5)。最近花了几天时间阅读AgentWeb源码和Demo。
分别从以下几点来说下感受:
1学习其中的技术和实现:
(1)继承自WebView时,在xml布局引用,只需写包名和类名。
<com.just.library.AgentWebView
android:layout_width="match_parent"
android:layout_height="match_parent"/>
通过这点,以便扩展,以后需要对某些view,进行添加新功能的时候,即可这样做,就像support v7包里,很多都是这样处理 的,比如android.support.v7.widget.Toolbar。
(2)对各个版本的兼容和处理。
在Android 4.4之前采用的是android 手机浏览器内核采用的是webkit,Android 4.4之后采用的是chromium作为内核。其中对于不同版本JS注入安全、防止内存泄漏、
通过WebBackForwardList来整理重定向的历史。我们现有的是采用的是通过Activity中的堆栈管理来处理的。
2是否适合接入到本身项目中作为h5库?
1AgentWeb
优点:
(1)对于 WebView 的封装 , 很多人都是抽象在一个基类里面 , 封装成一个 BaseWebActivity , 或者 BaseWebFragment (包括我们项目里也是),复用性不高 , 而且容易导致 Activity 或者 Fragment 基类膨胀 。AgentWeb封装的思路是通过代理,将WebView从Activity或者Fragment中代理出来,不在需要Activity或者Fragment内部创建和管理,通过抽出AgentWeb来管理和对webview进行设置。换句通用的话来解释就是,之后要新建webviewActivity就不用依附在BaseWebActivity了。
(2)AgentWeb把WebView代理出来,将功能分成一个类去管理,WevCreator->负责创建WebView以及进度条、WebSettings->对WebView进行统一设置。JsEntraceAccess->Javascript方法访问进行统一入口,这样做使得每一个功能独立,相互不影响,也使得AgentWeb的结构清晰,符合单一职责原则。
但是,我个人认为这样的封装,对于业务很多布局都特别类似的,则不太合适,因为我们每个webview的显示的布局,几乎就是一个标题栏+一个webview控件+一个progress bar(进度条)。
缺点:
(1)如果布局类似的话,就需要自己在此基础上搭建基类baseActivity或者baseFragment,这样和原有的设计就没什么区别了.。
(2)其次addJavaScriptInterface中的协议库里是写成"Agent Web",如果需要引用的话,需要下载源码,更改库。
(3)如果和h5协议比较多,使用该开源库还是不是很方便,需要下载源码进行更改。
3结论:
因为安卓自身对webview支持就不是很友好,该库并未替换内核,主要是对功能性的扩充,所以对页面加载速度和渲染速度无明显优化。
阅读全文
0 0
- AgentWeb三方android web开源库的理解和认识
- AgentWeb , 一个简洁易用的 Android Web 库
- AgentWeb , 一个简洁易用的 Android Web 库
- 初学者对Android的认识和理解
- HDFS的认识和理解
- Angularjs的理解和认识
- android三方登录和分享
- 关于CRM的理解和认识
- 关于泛型的认识和理解
- 计算机系统性能评价的认识和理解
- 认知信息处理系统的认识和理解
- 对于代码审查的认识和理解
- 关于分布式的一些理解和认识
- Handler.obtainMessage()的认识和理解
- 对View的一些理解和认识
- android三种动画的认识
- 对WEB标准以及W3C的理解与认识
- 对WEB标准以及W3C的理解与认识?
- Maven学习笔记---传递依赖冲突解决
- 3S基础知识:用MapX快速开发
- java List 排序 Collections.sort()
- nginx及apache不缓存配置
- 安卓系统修改常用命令
- AgentWeb三方android web开源库的理解和认识
- 中文乱码三种解决方式
- 【复习笔记】关于synchronized的使用整理
- 循环与数组
- *** Assertion failure in -[UITableView _endCellAnimationsWithContext:], /BuildRoot/Library/Caches/co
- 3.2.3配置sqlsrv数据库出现'PDO::SQLSRV_ATTR_ENCODING'的问题
- python学习历程_基础知识(2day)
- hive日志的存储位置
- [Python]网络数据采集概述(4)—爬虫仿浏览器访问