安卓开发八年,终于明悟安卓开发未来的发展之路
前言
我是14年毕业的,从事 Android 开发行业至今已有八年的的时间,做了这么久的安卓开发工作,也因此对安卓开发所拥有的价值有着更加深入的认知,对安卓未来的发展方向,也是由最初的迷茫到现在一步步的清晰起来,所以我准备做一个对自身过去的回顾以及未来安卓发展方向的展望
回顾
我们总是在为了生活奔波,渐渐的迷失在了其中,但我们必须清楚的知道自己从哪里来,才能知道未来要到哪里去
入行之后遇到的一些事情
毕业出社会,开始 Android 开发之旅
毕业之后,进入了一家小公司;在这家公司工作的几年,技术栈一直没怎么变过,就是传说中的 SSH,也不是说 SSH 不好,Spring 不是也火到现在么,问题是:“大部分工作都在做增删查改,而且是并发量、数据量都非常低的增删查改”
更可怕的是,在这种环境中工作久了,可能会让你有一种自己很厉害的错觉,因为数据量很少,几百万几千万的数据量,加个索引就查询的很快了,只要自己知道如何避免索引失效,就已经打败了 90% 的队友,因为你的眼界已经变窄了
我自认为还算是个努力的人,一直是单位中技术能力的“佼佼者”,但是我心里知道,我这点儿能力拉到外面去根本是个渣渣
“心存敬畏,放宽眼界”,我一直这么告诉自己
跳出当前的圈子,寻求更好的发展
当年我在这个小公司已经爬到了一个技术工程师的位置,但我并不为此感到自豪,我想要去往大城市发展,只有这样才能学到更为前沿的技术,于是我准备跳槽,但当我准备跳槽的时候我意识到自己的一个很大的问题:时常感觉自己没有准备好,面试的时候会不会被鄙视,我还是刷一个月的题再去吧;一个月之后,感觉不懂的东西更多了,然后继续准备
因为这样,我也错过了很多的机会,有朋友内推我去面试,我后来都已各种理由推掉了;后来我发现,很多朋友也有这样的问题,老是怕面试过不了,所以干脆没有去面试
所以必须要在“平时做好准备,机会是不会等到你做好准备了才来,看到机会就上!就算没做好准备,也硬着头皮上去试试”
后来我终于下决心必须跳槽了,最后面试了几家公司,通过率还算不错;有时候被面试官秒杀,有时候秒杀面试官
进入腾讯;开始架构师进阶之路
经过自己的努力,终于面试通过,拿到了 offer ;在进入腾讯之后,我被分配到底层开发的业务中,也是由此打开了自己的眼界
腾讯有着多款亿级用户的产品,复杂的业务常常会遇到各种意想不到的问题,这些问题需要深入底层,对安卓系统的整个架构都比较熟悉,才能够解决
上面这张图想必大家都看过,是 Google 官方提供过一张经典的架构图,其中每一层都包含大量的子模块或子系统
之前我始终停留在一二层,不得寸进;但在进入腾讯这一时期,对此终于有了纵深的实践经验
比如帮业务方解决一个内存问题,除了要了解内存指标监控方式,还要知道分析不同类型内存使用的工具及基本原理,最后知道是哪里出了问题后,还要想如何进行体系化的工具,降低学习成本,提升排查效率
问题驱动是非常好的学习方式;每次帮助业务解决一个新问题,我的知识库都会多一个点,这让我非常兴奋;之前不知道学来干什么的 Linux 编程、Android 虚拟机,终于在实际问题中明白了使用场景,学起来效率也高了很多
对 Android 开发未来发展方向的展望
Android 发展至今,已成为全球用户量最广泛的移动操作系统,手机行业竞争异常激烈,经过几番洗牌,国内手机厂商主要是华为、小米、 OPPO、VIVO 四大公司,并且随着移动互联网增长见顶,国内 Android 开发的需求也越来越少;那么Android 的未来在哪里呢?
目前,Android 在应用层次的发展已经见顶,未来的发展主要集中在人工智能和 5G 结合的产业,智能汽车、智能家居、 IOT都将是 Android 发展的广阔市场;但就目前人工智能的奇点还没到来,技术还处于前期阶段,一旦奇点来临将会爆炸式发展,或将重新定义生活方式
汽车的智能化和互联网化是未来一大趋势, Google 这两年确实在汽车领域发力,Android Auto 在过去一年的用户增长250%。天生的移动特性加上越来越多的互联网服务需求,汽车需要一个具备多种感知能力的系统,或将成为是继手机、电视后 Android 的下一重点开拓领域
那么我们应该如何跟上这一未来趋势呢?
首先我们可以通过上面 滴滴出行 的 招聘信息 中了解到车载开发所必须要学会的就是 Framework 源码 的学习;而 Framework 源码 中又包含了 Handler 、Binder 、AMS、WMS 等 重点学习对象
那么我们就必须要有一个好的学习方向,这样才能在其中不走弯路,从而精通 Framework ,以此来抓住这一新时代的机遇;所以在这里,我分享一份由腾讯大佬所整理的一份Framework 学习笔记;有需要学习笔记的朋友 可以私信发送 “笔记” 即可 免费获取;希望大家看完之后能给大家一些帮助
内容展示如下:
《Framework 学习笔记》
《Android 车载工程师必修知识》
- 开发汽车媒体应用
- 构建车载媒体应用
- 配置应用的清单文件
- 创建媒体浏览器服务
- 启动播放控制
- 支持语音操作
- 实现注意力分散预防措施
- 构建 Android Auto 即时通信应用
- 导入 Android X 核心库
- 声明 Android Auto 支持
- 构建车载导航和地图注点应用
- 测试 Android 车载应用
- 分发 Android 车载应用
完整版PDF文档获取方式: 私信发送 “笔记” 即可免费获取
《应用程序与 AMS 的通讯实现》
- 从应用程序进程到管理者进程
- 应用程序进程向管理者进程发送消息
- 从管理者进程到应用程序进程
- 管理者进程向应用程序进程发送消息
- 用户进程接收消息
《应用进程与 WMS 的通讯实现》
- WindowManagerImpl & WindowManagerGlobal
- ViewRootImpl
- 从应用进程到管理者进程
- 从管理者进程到应用进程
《应用进程之间的通讯实现》
- 服务端编写 AIDL 文件、编写 Service、声明 Service
- 客户端编写 AIDL 文件、绑定服务,并调用
- IBinder实现原理
完整版PDF文档获取方式: 私信发送 “笔记” 即可免费获取
《Handler机制之Thread线程》
- 线程概念
- Android线程的实现
- 线程的阻塞
- 关于线程上下文切换
- 关于线程的安全问题
- 守护线程
- 线程的内存
《Binder机制之Linux基础》
- Linux介绍
- 开源发展实验室和Linux基金
- 内核态与用户态
- 为什么要有用户态和内核态
- 红黑树 数据结构设计
- Linux的跨进程通信(IPC)概述
- Linux的跨进程通信详解
- Linux的几种跨进程通信的方式的比较
完整版PDF文档获取方式: 私信发送 “笔记” 即可免费获取
机遇往往是留给有准备的人,一个好的机遇往往就能让你一飞冲天;但机遇即使到了你身边,你却没有能力留住它,那么它还是会从你的身边溜走,所以我们一定要在有限的时间内,将自己的技术打磨好,不断的吸取新知识,努力提升自己的知识水平和技术层次,只有这样,你才能在机遇降临到你身边的时候,你才能够牢牢的抓住它
既然选择了程序员这个行业,那么你一定要做好充足的准备;要想在人前显贵,背后所付出的辛劳和汗水就是必须的
Android 架构师之路还能漫长,与君共勉