Android项目如何搭建属于自己的技术堆栈

1、APP的整体架构

一个APP的整理架构可以分为2层,应用层和基础框架层。
应用层专注于行业领域的实现,例如金融,支付,地图导航,社交等,是面向用户的是关于用户对产品的第一层感知
基础框架层专注于技术领域的实现,提供APP公有的特性,是用户对产品的第二层感知,比如性能,稳定等。

一个理想的APP架构,
1、首先要是跨平台的
2、然后具有清晰的层次划分同一层模块间充分解耦,模块内部符合面向对象的设计六大原则
3、最后才是在功能,性能,稳定性等方面达到最优。
其中基础框架层包括了组件层,基础层,跨平台层
组件层一般包含了二维码扫描,手势密码,安全键盘,插件框架,推送服务,埋点统计,社交分享,Hydrid混合开发等

基础层包括:网络通信,数据库操作JSON解析,日志记录,加解密,XML解析依赖注入图片缓存等。
跨平台层包括:I/O操作,字符编码转换,日志记录,日期时间,消息处理,线程,互斥锁,条件变量等
下面主要介绍基础层。

1、日志记录能力

Logger

以前我们是在系统提供的log上进行简单的封装,比如增加全局控制是否打印日志的开关,增加打印到文件的能力。
但是Logger好处是:

  1. 完美的格式化输出;
  2. 包含了线程,类,方法信息;
  3. 支持跳转到源码处;
  4. 支持格式化输出json,xml格式信息。
LogUtils && timber

因为Logger只支持输出日志到logcat,不能将其保存到磁盘上,而且虽然支持json,xml的格式化输出,却不支持List,Set,Map和数组等集合的格式化输出针对第一个缺点我们考虑采用timber针对后面这个缺点我们可以采用LogUtils。
其中timber的思想就是维护一个森林对象,由不同的类型的日志树组合而成,比如Logcat记录树,文件记录树,网络记录树等,森林对象提供对外的接口进行打印每种类型的树都通过种植操作来把自己添加进森林对象中,通过移除操作从森林对象中删除,从而实现该类型日志记录的开启和关闭。

方案:timber+Logger+LogUtils

2、json解析能力

这里有很多种,比如Gsonfastjsonjackson等。
其中jackson是针对Java语言通用的json函数库,没有为Android优化定制,因此含有很多无用的api,体积太大,并不合适。
Fastjson采用一种叫做“假定有序快速匹配”的算法,把json parse的性能提升到极致,而且还提供了一个面向android定制的版本,fastjson.android。

gson:232k;jackson:1.5M ; Fastjson.android:256k。

方案:fastjson.android

3、数据库操作能力

这里主要介绍greenDAO和Realm
greenDAO是一个轻量级的快速的ORM框架,专门为Android高度优化和定制,能够支持每秒数千条记录的CRUD操作。

Realm一个全新的移动数据库引擎,拥有自己的数据库存储引擎,实现了高效快速的数据库构建操作,比ORM框架快死了!!!
三大突出的优点:

  1. 跨平台:使用了Realm,android和ios开发者就无需考虑内部数据的架构,一个数据库,两个平台的无缝连接。
  2. 用法简单;
  3. 可视化操作;

但是他太大了。4.2M,包含了不同cpu架构平台的.so文件增加了整个包的大小。

综合考虑考虑性能,包大小等,选用greenDAO

4、网络通信框架

android-async-http
是对HttpClient进行的封装但是在android6.0之后,系统对开发者隐藏了HttpClient,因此android-async-http用了一个新的函数库,并没有用系统的httpClient,因此要额外的空间。不好!系统说用HttpURLConnection替代HttpClient。
OkHttp:是一个高效的HTTP客户端。网络性能很惨的情况下可以良好的工作,能够避免常见的网络连接问题。
Volley网络通信库。适用于数据量小等通信频繁的场景,简化了网络任务,帮助开发者处理请求,加载,缓存,多线程,同步等任务。2.3以上版本,使用了HttpURLConnection来发起网络请求。
Retrofit:默认使用GSON作为json解析器,使用okhttp实现网络请求。

结论:HttpURLconnection,HttpClient和OKhttp封装了底层的网络请求,而android-async-http,Volley,Retrofit是在前面三者的基础上二次开发而成。

5、图片缓存和显示

Picasso
Glide:与Picasso有90%的相似度,区别:为包含了图片的滚动列表做了尽可能流畅的优化。也支持gif,极大减少了OOM。加载块,图像没有Picasso清晰。
使用httpURLconnection作为网络请求模块。
Fresco:使用了三级缓存:两级内存一级磁盘。

picasso:120kb。
glide:475kb。
Fresco:3.4Mb

结论:对于对图片缓存依赖严重的用Fresco

根据APP对图片显示和缓存的需求从低到高排序:
Picasso< Glide< Fresco

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值