从 14 年学习 Android 至今,经历了各种应用架构的变化,下面,我们来一起回顾下曾经 Android 开发的青葱岁月。
IDE
那时候的 Eclipse 是非常流行的 IDE,他提供了各种插件开发的能力,一点也不逊现在的 idea,Android 就是通过 ADT 插件来使开发者能在 eclipse 上进行开发。
那时候没有 gradle 这种 implements 直接引用项目模块,如果要依赖项目模块的话,需要通过 build path 勾选模块,将他添加到当前项目,这时候才能通过项目代码引用到他,那时候对外发布依赖都是 jar 包 。
刚去找了下 Eclipse for Android 的开发包,目前 release 版本定格在 2016 年 5月 27 号,然后找到了一篇 Android Studio 横空出世的文章《Google Says Final Goodbye to Eclipse IDE for Android Development》,真的是物是人非。
贴一张 eclipse 的项目结构图:
网络库
记得第一个练手的项目,用的网络框架是 HttpURLConnection,简单的 get 请求就能拿到数据并展示到页面上,非常有成就感,主要还是因为那时候是刚学的 java ,过渡到写 Android ,第一反应就是用 jdk 自带的这个网络请求。随着从《疯狂 Android 讲义》学习到的一些知识,发现 Android 有自带的网络请求框架 HttpClient,那时候可是称霸的存在。
随着优秀的开发者涌入 Android 怀抱,越来越多优秀的框架出来,为了解决我们项目中各种各样的问题,就有人提出了一套式的解决框架,叫 xUtils,他提供了非常多的功能,有上传、下载、网络请求、图片加载、数据库等等功能。
随着 Android 用户的日益增加,性能优化也被提了出来,这时候 Volley 开始登场,支持自定调度网络请求,支持多个并发的网络连接,名声也大造了一小会,但他缺点也有,不适合 post 大量数据,以及不适合上传下载大量文件。那时候我也只记得用过一小段时间的 volley。
以上的所有网络库,在 square 发布 okhttp 后,都失去了色彩。可以这么说,okhttp 为Android 统一网络请求库做出了卓越的贡献,直到现在,我们依然还在用 okhttp,吊打般的存在。
图片库
不知道你们有没有做过列表加载网络图片的需求,那时候可没有 Glide 这么简单好用的工具,直接一个 load(url).with(image) 就可以了,我们在列表中拿到图片 url 的时候,会通过 HttpURLConnection 去请求网络图片,然后通过 BitmapFactory 将 stream 流转成 bitmap,然后塞到 ImageView 的 tag 里面,如果 tag 不为空,则取出来设置到 ImageView 上,这还是最初级的,好一点的就是通过 url 为 key,做一个 Bitmap 缓存,imageView 的 tag 中直接记录 url 即可。
后来出现了一款框架叫 image-Loader,只需要传图片 url 和 imageView 就可以了,自动帮你完成图片加载,那时候非常受欢迎,我现在又去 github 搜了他一下,17 个月之前居然还有 update,也是奇迹。
后来我接触到了 Picasso,后面才接触到的 Glide,那时候有一篇两者性能对比的文章分析,说 Picasso 采用的 ARGB_8888 来加载图片,Glide 采用的是 RGB_565 来加载图片,Glide 图片占用更小,性能更好。 Fresco 也听说过,但一直没用过,就是感觉侵入式有点大,xml 中要写 fresco 提供的 SimpleDraweeView 来加载网络图片。
随着 kotlin 的发展,coil 也横空出世,一款更适合与协程来搭配使用的图片加载库。
View 控件
那时候 ListView 还很流行,面试题也很简单,只要答对了采用 holder 优化多次 findViewById 问题即可。
布局也是各种嵌套,各种 RelativeLayout,现在的你们还有听说过绝对布局 AbsoluteLayout 吗?
架构
那时候一个 Activity 写上几千行代码都不算什么事,大部分从事 Android 的有很多是从后端转过来的,所以,MVC 开发模式非常流行,随着客户端开发人员的增多,为了实现模块复用,才提出的 MVP 这种开发模式。MVVM 模式的应用,也是 databinding 的出现才让 MVVM 有所发挥。
博客
那时候 Android 开发社区也少,印象中第一个接触的是 iteye , 后面开始接触的 csdn,当然,那时候 csdn 还是比较纯粹的,我的第一篇文章就是在 csdn 发表的。
总结
还有很多有趣的点一时半会也没办法记起,只能随着时间推移走向遗忘