前言
Q:我们在Android开发中,为什么需要搭建框架?
这个问题,想必有很多新手会问,当然也包括以前的我。为什么需要框架?搭建一个框架有什么好处?
我们带着这个问题开始探讨......
如果没有使用框架,我们的应用中可能会这样:
Activity中,一堆的控件声明和findViewById,或者ButterKnife的一堆BindView,或者两者混合,没有统一规范。且Activity里代码又臭又长,有控件数据绑定、有业务逻辑、有事件处理等等。
网络请求,有些地方使用HttpUrlConnection,有些地方使用Okhttp,且每个网络请求都要写一堆回调处理、异常处理,并且不同网络库处理还不一样。
权限申请的代码分布在项目的各个角落,若需要修改权限请求方式,需要一个个搜索、修改,还可能会遗漏
操作数据库的代码有的在主线程,有的在子线程,且数据库有字段修改,可能造成获取数据异常
等等......
因此我希望搭建一个框架,可以:
不写FindViewById
Activity和Fragment只处理ui交互事件,不关心业务逻辑,不处理业务数据
网络请求有统一的异常处理,能自动转换成我需要的数据类型
数据库自动转换成我需要的实体类,不关心如何转换、游标需不需要关闭等问题
数据变化自动更新到ui
等等...
简单点说,一切为了快速开发,就是尽可能地少写代码,把重复工作交给框架,这样能减少很多代码量,同时也比较不容易出错(只要框架不出错)。
那么问题来了,如何搭建框架呢?且听我慢慢说
一、语言选型
语言方面,Android开发考虑两种语言:Java和Kotlin,Java想必是所有Androider都会使用的语言了,但这里我推荐用Kotlin,为什么呢?
自Google IO 2017以来,Kotlin被Google爸爸列为Android开发一级语言后,Github上越来越多的开源库都开始使用Kotlin来编写,甚至Google Developer官方教程中,也使用Kotlin来编写demo。
Kotlin有什么优势:
可以从Java无缝过渡,Kotlin完全兼容Java,你可以完全使用Kotlin开发,也可以Kotlin和Java混合使用
语法简洁,相同逻辑的代码,在不失语义的前提下,Kotlin可以做到比Java更加简洁,代码量更少
空指针安全,Kotlin提供安全的空值访问,在编码期间解决变量空值问题
扩展函数,Kotlin使用扩展函数在旧的类中添加新的扩展方法,例如:在String中添加日期转换方法
更好用的数据类,不用再写getter/setter等一大堆又臭又长的代码
等等......
简单点说就是,Kotlin比Java好用些,并且如果你不怎么会Kotlin,你可以一边写Java,一边写Kotlin,渐进地转换到Kotlin开发,反正它们俩是兼容的。
二、基础架构选型
在Android界,我的思想是:面向Google编程,简单点说,就是Google爸爸推荐用什么库,我就用什么库,Google爸爸就是Androider的模板。
Google爸爸的Android开发者中文页面:https://developer.android.google.cn
为了构建更加健壮,用户体验更好的App,我们要用到Google爸爸这些个库:
Support系列。包括support-v4、support-appcompat-v7、support-design、support-constraintlayout等等,Support系列包是Google推出的一些列兼容包,使用这些库开发Android App,可以获得更好的兼容性、健壮性和性能
Architecture components系列。Google IO 2018推出了一些列全新的开发工具包,Architecture components就是其中一个,它包括Data Binding、LifeCycle、ViewModel、LiveData、Room、WorkManager、Navigation等一系列库,从生命周期到数据库到线程工作等等。
三、其他架构选型
诸如网络请求、图片加载、缓存、路由......等等,篇幅考虑,将在后续文章中说明。
领取专属 10元无门槛券
私享最新 技术干货