安卓开发八年,终于明悟安卓开发未来的发展之路

前言

我是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 架构师之路还能漫长,与君共勉

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


学习编程是顺着互联网的发展潮流,是一件好事。新手如何学习编程?其实不难,不过在学习编程之前你得先了解你的目的是什么?这个很重要,因为目的决定你的发展方向、决定你的发展速度。
IT行业是什么工作做什么?IT行业的工作有:产品策划类、页面设计类、前端与移动、开发与测试、营销推广类、数据运营类、运营维护类、游戏相关类等,根据不同的分类下面有细分了不同的岗位。
女生学Java好就业吗?女生适合学Java编程吗?目前有不少女生学习Java开发,但要结合自身的情况,先了解自己适不适合去学习Java,不要盲目的选择不适合自己的Java培训班进行学习。只要肯下功夫钻研,多看、多想、多练
Can’t connect to local MySQL server through socket \'/var/lib/mysql/mysql.sock问题 1.进入mysql路径
oracle基本命令 一、登录操作 1.管理员登录 # 管理员登录 sqlplus / as sysdba 2.普通用户登录
一、背景 因为项目中需要通北京网络,所以需要连vpn,但是服务器有时候会断掉,所以写个shell脚本每五分钟去判断是否连接,于是就有下面的shell脚本。
BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。
假如你已经使用过苹果开发者中心上架app,你肯定知道在苹果开发者中心的web界面,无法直接提交ipa文件,而是需要使用第三方工具,将ipa文件上传到构建版本,开...
下面的 SQL 语句指定了两个别名,一个是 name 列的别名,一个是 country 列的别名。**提示:**如果列名称包含空格,要求使用双引号或方括号:
在使用H5混合开发的app打包后,需要将ipa文件上传到appstore进行发布,就需要去苹果开发者中心进行发布。​
+----+--------------+---------------------------+-------+---------+
数组的声明并不是声明一个个单独的变量,比如 number0、number1、...、number99,而是声明一个数组变量,比如 numbers,然后使用 nu...
第一步:到appuploader官网下载辅助工具和iCloud驱动,使用前面创建的AppID登录。
如需删除表中的列,请使用下面的语法(请注意,某些数据库系统不允许这种在数据库表中删除列的方式):
前不久在制作win11pe,制作了一版,1.26GB,太大了,不满意,想再裁剪下,发现这次dism mount正常,commit或discard巨慢,以前都很快...
赛门铁克各个版本概览:https://knowledge.broadcom.com/external/article?legacyId=tech163829
实测Python 3.6.6用pip 21.3.1,再高就报错了,Python 3.10.7用pip 22.3.1是可以的
Broadcom Corporation (博通公司,股票代号AVGO)是全球领先的有线和无线通信半导体公司。其产品实现向家庭、 办公室和移动环境以及在这些环境...
发现个问题,server2016上安装了c4d这些版本,低版本的正常显示窗格,但红色圈出的高版本c4d打开后不显示窗格,
TAT:https://cloud.tencent.com/document/product/1340