在我们的身边,存在一个普遍现象:很多人从事Android开发工作多年,走过的弯和坎,不计其数,经历的心酸难与外人道也。可是技术确难以提升、止步不前,薪资也只能看着别人水涨船高,自己却没有什么起色。
虽然在公司里属于不可缺少的一员,但是同时又担心离开了这家公司就找不到更好的工作了。
有这种焦虑的朋友或许应该思考一下这个问题:如何提升自己在 Android 市场上的竞争力?
首先我们要解决一个问题:为什么很多人会一直停留在两三年的水平上,而后一直在重复以往的经验?
我认为最主要的一点就是主观能动性,或者说兴趣,如果你对Android开发没有太大的兴趣,那么还是尽早换方向吧。有了兴趣,然后就是要有一个比较正确的钻研路线,不要这也搞那也抓,最后什么都没精通又好像什么知道。
第一阶段
在面试中,很多面试者以用过很多库为荣,你真的去了解过这些库么?研究过源码吗?没有怎么改善?
对于Android源码和第三方库源码阅读,可以根据自己感兴趣的类型,选择相应的源码库或模块,给自己约定一个时间点,看完之后最后有个流程图,哪些是核心类,类与类之间都有什么关系,这些开源代码实现的机制是什么,用到哪些解决思想,这些要点最终可以通过文章输出,我觉得输出倒逼输入是一种很不错的学习方式。
提升通用技术能力。一来通用技术如数据结构和算法、计算机网络、操作系统、计算机系统结构等,对技术的深层理解有很大的帮助,二来这类技术在不同的语言和技术方向上切换时是共通的。
第二个阶段
我觉得可以尝试去了解Android Framework比较细节的一些东西,比如activity启动流程,顺便分析清除Activity stack的管理,比如了解Android的资源加载机制,顺便了解aapt是如何打包Android资源的;又比如Java的类加载机制,这里配合资源的加载机制,很自然的就可以去了解Android的hotpatch机制,插件化的实现,开一些这方便的开源库或者自己撸一个也就自然而然。
第三个阶段
现在去很多公司面试,除了你具备基本的能够写一个高性能app的能力后,一般都会在自己的app里面加一些现有的相对较牛掰的技术,这些技术我们称之为前沿技术。
他们一般包含热升级,热修复,App Instant,强制更新,组件化路由架构Arouter,RxJava,IOC架构方法,Hook技术等等,当然,这些技术你不能只会用,你需要知道他的原理,有时候,你还需要知道如何对这些架构进行改进。
另外,非常重要的一点,Android开发者不愿意接受新知识,所以对于现在Google推出的新的技术方案毫无感觉,这些都是被 control C 和control V所毒害,开源让开发者失去了自我,失去了基本的编码能力,失去了深入学习的信心和毅力,所以对于很多google推出的新技术好组件(Google I/O 大会新技术),好框架已经很多人不愿意去学习了。这是不应该的,我们需要好好学习啊。
第四个阶段
提升软实力。软实力实际上也是一项通用的技能,甚至比第一条更加通用。
良好的沟通可以缩短开会的时长、节省相互之间的沟通成本,也使得团队合作更加愉快。不错的文档表达能力可以省去不少的重复沟通。
懂得规划自己的时间,上班时能更有条不紊地完成任务,下班也能高效地规划业余时间的学习。
懂得反思:为什么这个任务预计五小时能完成,却变成了三天;为什么这个需求要这样做,这么做是最合理的吗,还有更好的方式吗?
对问题、业务和自身的更多思考有助于更好地发挥和展现你的技术实力。
最后
在这里,我想给想进阶的朋友们一点建议:很多时候,很多事情,并不像你想象中的那么简单,千万不要自认为简单而不愿意去做,很多东西只有你亲手去做了之后,才会发现事情并不像你最初想的那么简单。
做为一名Android开发者,我想分享一下这些年来,我对于技术一些归纳和总结,希望能帮助到有心在技术这条道路上一路走到黑的朋友!
1.高级UI,自定义View
UI这块知识是现今使用者最多的。当年火爆一时的Android入门培训,学会这小块知识就能随便找到不错的工作了。
不过很显然现在远远不够了,拒绝无休止的CV,亲自去项目实战,读源码,研究原理吧!
2.NDK模块开发
时至今日,短视频App可谓是如日中天,一片兴兴向荣。随着短视频的兴起,音视频开发也越来越受到重视,而且薪资水涨船高,以一线城市为例,音视频工程开发的薪资比Android应用层开发高出40%。
内容主要涉及以下几个方面:
- NDK 模块开发
- JNI 模块
- Native 开发工具
- Linux 编程
- 底层图片处理
- 音视频开发
- 机器学习
3.数据结构与算法
为什么要研究数据结构?
这是因为所有的程序本质上是对数据进行处理,如何高效的处理数据,这依赖于数据本身的结构(如类型(整型、浮点型等)、维数、是否为复杂类型(结构体类型、类类型)等)以及数据之间的逻辑关系(线性、非线性等)。
数据结构离不开算法,设计好的数据结构就是为了让算法顺利方便的实施。
4.Java进阶与内核原理
内容主要涉及以下几个方面:
- HashMap
- ArrayList
- LinkedList
- Hashset源码分析
- 内存模型
- 垃圾回收算法( JVM )
- 垃圾回收机制和调用 System.gc()的区别
- 类加载过程
- 反射
- 多线程和线程池
- 设计模式
- Java的泛型
等等…….
5.Flutter技术进阶
本篇知识要点:
1、Flutter跨平台开发概述
2、Windows中Flutter开发环境搭建
3、编写你的第一个Flutter APP
4、Flutter Dart语言系统入门
6.360度全方面性能调优
随着产品内容迭代,功能越来越复杂,UI页面也越来越丰富,也成为流畅运行的一种阻碍。综上所述,对APP进行性能优化已成为开发者该有的一种综合素质,也是开发者能够完成高质量应用程序作品的保证。
1、设计思想与代码质量优化
2、程序性能优化
- 启动速度与执行效率优化
- 布局检测与优化
- 内存优化
- 耗电优化
- 网络传输与数据储存优化
- APK大小优化
3、开发效率优化
- 分布式版本控制系统Git
- 自动化构建系统Gradle
4、项目实战
- 启动速度
- 流畅度
- 抖音在APK包大小资源优化的实践
- 优酷响应式布局技术全解析
- 网络优化
- 手机淘宝双十一性能优化项目揭秘
- 高德APP全链路源码依赖分析
- 彻底干掉OOM的实战经验分享
- 微信Android终端内存优化实践
7.Framework精编内核解析
主要内容包含:
- 深入解析Binder
- 深入解析Handler
- Dalvik VM 进程系统
- 深入解析 WMS
- PackagerManagerService
8.Jetpack架构组件从入门到精通
- Android Jetpack – Navigation
- Android Jetpack – Data Binding
- Android Jetpack – ViewModel & LiveData
- Android Jetpack – Room
- Android Jetpack – Paging
- Android Jetpack – WorkManger
- Android Jetpack架构组件之Lifecycle
- Android Jetpack Compose 最全上手指南
想进阶Android高级工程师和需要PDF文档的朋友都可以加入这边的交流qun,前面:1102,,中间:405,,最后:044
裙里从学生到大佬都有,资源免费分享,不见不散哦!
复制代码