Android从零开始(第一篇)框架搭建以及技术选型

Android从零开始(第一篇)框架搭建以及技术选型

隔了好久终于有时间再写博客了,我那25个粉丝应该会想念我的吧。

前言

工作接近两年的时间,很多时候都在使用Ionic再进行软件开发,但心中对Android原生的热爱依然不减。因为种种原因辞掉了原来的工作,而如今再遇到人生第二份工作选择的时候,我依然毫不犹豫的选择当一名Android工程师,即使心里清楚地明白自己的工作经验对一位Andriod工程师来说是不足的,但喜欢就是喜欢,再选一百遍也会依旧。写下这边文章的初衷是想能够实际应用以前的只是,重新敲到心爱的原生代码(当然我不是讨厌前端,对于js这些我也是很珍惜的),找到原生编码的感觉,回顾知识。并且能够多增加一点项目经验。

项目描述

该项目是旨在解决淘宝/微商之类的买家提供一个商品管理统计的功能,因为身边有些朋友在这个行业让我察觉到他们的烦恼,于是通过一些了解大致总结出管理麻烦、统计麻烦、进度最总不够方便、不能及时提醒跟进等等。
所以我决定给项目命名为:商品管理。第一版本完成的功能如图
在这里插入图片描述

登陆注册功能暂时本地模拟。

技术选型

整体架构模式

MVC / MVP / MVVM
MVC 跟 MVP架构都有在实际工作中使用,个人对MVP的结构更加喜爱。这三者的对比网上资料很多,个人理解就是MVC是对象之间的持有,操作简单但维护会增加难度,解耦度不够优秀。MVP则是接口互相持有,解耦度优秀,但写法会相对负责并且有金额能面临的问题就是复杂页面要提供很多接口,在接口的维护上回增加难度,所以要注意这些接口的基类设计,减轻工作量。至于MVVM个人感觉他是一个很好的东西,在前端开发上引用非常广泛,但由于个人爱好跟使用经验还是决定用MVP。

网络请求:

三个最常用的网络请求框架:Okhttp Volley Retrofit
3个都有用过之前也做过详细的对比,但忘记的7788了。现在用的最多的是okhttp,下面做一个简单的对比。
Volley
适用于数据量不大但通信频繁的请求
优点:
(1)自动调度网络请求;
(2)高并发网络连接;
(3)通过标准的 HTTP cache coherence(高速缓存一致性)缓存磁盘和内存透明的响应;
(4)支持指定请求的优先级( 请求队列的优先级排序);
(5) 提供多样的取消机制:网络请求 cancel 机制,我们可以取消单个请求,或者指定取消请求队列中的一个区域;
(6)框架容易被定制,例如,定制重试或者回退功能;
(7)包含了调试与追踪工具;
(8)默认 Android2.3 及以上基于 HttpURLConnection,2.3 以下使用基于 HttpClient
(9)提供简便的图片加载工具(其实图片的加载才是我们最为看重的功能),需要更好的处理图片还是用专门的图片处理框架

缺点:
(1)不能下载文件:这也是它最致命的地方

OkHttp
是一个相对成熟的解决方案,据说 Android4.4 的源码中可以看到 HttpURLConnection 已经替换成 OkHttp 实现了。在 Android 6.0 中底层的源码已经使用了 OKHttp ,这个是可以确定的。

OkHttp 处理了很多网络疑难杂症:会从很多常用的连接问题中自动恢复。如果您的服务器配置了多个IP地址,当第一个 IP 连接失败的时候,OkHttp 会自动尝试下一个 IP。OkHttp 还处理了代理服务器问题和 SSL握手失败问题。

使用 OkHttp 无需重写您程序中的网络代码。OkHttp 实现了几乎和Java.NET.HttpURLConnection 一样的API。如果你用了 Apache HttpClient,则 OkHttp 也提供了一个对应的 okhttp-apache 模块。
retrofit
其实 retrofit 是根据 OKHttp 封装的框架,它的底层网络请求就是使用OKHttp的

优点:
(1)支持 okhttp
(2)注解处理,简化代码
(3)支持上传和下载文件
(4)支持自己更换解析方式
(5)支持多种http请求库

结合个人经验的原因,最后选择网络请求使用Okhttp,但对于新手来说更加建议使用Retrofit,因为在使用上更加便捷且组合其他库(如Rxjava)也更加适合。

图片加载框架

Picasso Glide Fresco

Picasso是著名的开源组织Square出品的图片处理框架,使用的比较多。

Glide是Google的员工基于Picasso开发,优化的,Android官网推荐使用的图片处理框架

Fresco是Facebook开源的图片处理框架,真正做到了三级缓存,功能强大,强烈推荐使用,但是体积大,需要追求apk体积的就慎重了。
这三个都有实际用过,用的Picasso比较多,这次决定使用:Fresco,追求好用!

其他

butterknife
在实际项目中findviewbyid…等等操作是很烦人的,所以考虑使用butterknife作为提升开发效率,而且这个注解并不是在运行时才运行,而是在你编译的时候就已经完成了,所以对性能是不影响的;并且集成以及使用都很简单,所以何乐而不为呢?哈哈哈。
eventbus
我选用eventbus作为我app中通讯的小助手,帮我简化一些组件之间的通讯问题。当然你也可以考虑使用RxAndroid去协助你解决通讯的问题。
gson
json解析库,还有fastjson也很是推荐,阿里出,必精品。
leadcannary
内存分析工具,要提高你app的质量就一定少不了它。


另外之后还会用到一些动画、图标之类的到时候再考虑选型。

好了,这篇文章就到这里了,感谢各位的阅读。
在看这篇文章的时候,你可以再去搜索一下那些同类型框架的详细对比,这点很重要。
项目等到创建的时候在开始put到GitHub上。

强烈建议入门android的人跟着我这个项目的脚步去做,去想。虽然不是最好的,但一定会给到你帮助。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值