致终将逝去的 Android

简介: 致终将逝去的 Android

从 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 的项目结构图:


image.png

网络库


记得第一个练手的项目,用的网络框架是 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 发表的,里面记录了我当时的大学生活。现在有了掘金,算是开发者有了个家了


总结


还有很多有趣的点一时半会也没办法记起,只能随着时间推移走向遗忘

目录
相关文章
|
JSON 小程序 数据格式
微信小程序的tabbar怎么配置
微信小程序的tabbar怎么配置
893 2
|
JavaScript 编译器 数据安全/隐私保护
TypeScript :关键字
本文介绍了 TypeScript 中的一些核心类型和工具类型,包括 `interface` 和 `type` 的基本使用和区别,以及一些高级类型如 `keyof`、`Record`、`Pick`、`Partial`、`Readonly` 和 `Omit` 的使用方法。文章还详细解释了 `namespace` 的作用和使用场景,帮助开发者更好地组织和管理代码,避免命名冲突,并提高代码的可维护性和可读性。
216 1
|
运维 安全 Devops
DevOps实践:持续集成与持续部署(CI/CD)的自动化之路
【10月更文挑战第22天】在软件交付的快速迭代中,DevOps文化和实践成为企业加速产品上市、保证质量和提升客户满意度的关键。本文将通过一个实际案例,深入探讨如何利用持续集成(Continuous Integration, CI)和持续部署(Continuous Deployment, CD)实现软件开发流程的高效自动化,包括工具选择、流程设计以及问题解决策略。我们将一起探索代码从编写到部署的全自动化旅程,揭示其对企业运维效率和产品质量所带来的深远影响。
|
机器学习/深度学习 人工智能 算法
计算机视觉:目标检测算法综述
【7月更文挑战第13天】目标检测作为计算机视觉领域的重要研究方向,近年来在深度学习技术的推动下取得了显著进展。然而,面对复杂多变的实际应用场景,仍需不断研究和探索更加高效、鲁棒的目标检测算法。随着技术的不断发展和应用场景的不断拓展,相信目标检测算法将在更多领域发挥重要作用。
|
XML 前端开发 API
中台框架的模块开发实践-代码生成器的添加及使用
本文档介绍了如何在中台项目框架 ZhonTai.Core 中集成代码生成器模块,以提升开发效率。首先,需要拉取 ZhonTai.Admin 和 ZhonTai.Module.Dev 的代码仓库,创建模块文件夹并配置后端代码。在后端,通过添加模块类库和路由配置,实现代码生成器服务。接着,配置前端,安装所需依赖,并修改路由配置以添加代码生成器模块。然后,将生成的代码添加到项目中,包括数据库迁移、菜单和权限配置。最后,展示了生成器的使用步骤和效果,包括创建数据表、生成菜单数据以及前端页面展示。文章还提及了后续的扩展计划,如自定义模板管理和通用代码生成器,并提供了相关的代码仓库链接。
80060 5
查手机号归属地免费API接口教程
此API用于查询指定手机号码的归属地信息,包括号段、省份、城市、运营商等。支持POST和GET请求方式,需提供用户ID、KEY及手机号作为参数。返回结果包含状态码、信息提示及详细归属地信息。示例请求地址:https://cn.apihz.cn/api/ip/shouji.php?id=88888888&key=88888888&phone=13219931963。
2039 5
|
Ubuntu Linux iOS开发
|
消息中间件 缓存 负载均衡
【Kafka】Kafka 消息的消费模式
【4月更文挑战第5天】【Kafka】Kafka 消息的消费模式
|
资源调度 分布式计算 大数据
【云计算与大数据技术】资源管理、调度模型策略的讲解
【云计算与大数据技术】资源管理、调度模型策略的讲解
1139 0
|
前端开发 iOS开发 MacOS
vscode自动跟随Mac或window系统系统切换主题色-白天用亮色主题、晚上用暗黑主题
vscode自动跟随Mac或window系统系统切换主题色-白天用亮色主题、晚上用暗黑主题
1206 0