曾听过很多人说 Android 学习很简单, 做个 App 就上手了, 工作机会多, 毕业后也比较容易找工作. 这种观点可能是很多 Android 开发者最开始入行的原因之一.
在工作初期, 工作主要是按照业务需求实现 App 页面的功能, 按照设计师的设计稿实现页面的效果.
在实现的过程中, 总是会被提如下的需求:
这个字能不能大点或者醒目点儿?
感觉颜色和设计稿有差别, 能不能再调调?
怎么老是崩溃啊, 行不行啊?
......
所以, 工作过一年后你会发现, 自己的工作重点就是将找各种各样的组件, 框架, 拖拖拽拽, 改改样式. 在极端情况下出现了问题后 (比如部分机型上崩溃, 加载图片慢), 也不知道该如何解决! 都不好意思说自己是搞技术的.
造成这种局面的有两种原因:
1. 所开发的 App 功能要求并不复杂, 在性能上呢, 也不需要极致的追求;
2. 自己的意识不够, 不知道如何从平凡的工作中提炼可优化的点, 在向上提升方面也没有完整的规划.
从自身规划的角度讲, 技术上的进阶分如下几个阶段:
1. 做好业务需求的功能. 这个是初级程序员就应该有的能力.
2. 解决极端情况下的技术问题, 比如性能优化, OOM 等. 稍有点规模的公司, 肯定都会遇到这种问题, 比如上文中说的 App 在部分机型上崩溃, 页面加载不出来等. 只是大部分程序员会觉得难以复现, 或者是因为小概率事件而忽略了. 在忽略这些问题的过程中, 也放弃了进一步提升的可能性. 还有一部分程序员是看到了这些问题, 但一直不知道怎么解决, 因为这些问题的产生基本都是要往底层框架去找原因, 而平时只关注上层的业务逻辑代码, 因而没有深入研究底层的原理, 导致心有余而力不足.
3. 在开发框架和效率上做文章.** 举个例子, 很多程序员说自己的精力都在和产品的撕逼中浪费了, 但有没有想过, 能够通过技术手段将自己从繁杂的无技术含量的工作中解救出来? 比如是否能够做到只编写一次代码, 或者改个配置参数就能够做到在不同平台上运行. 更高的要求是, 能否将这些方案做成通用框架或产品.
上面列举的几个阶段, 首先要从思考方式上去逼迫自己不断地逼迫自己, 不要偷懒. 其次, 要想按照上述阶段发展, 还需要落在实处, 在具体的技术体系中不断的学习.
举个例子:
对于 OOM, 需要知道有哪些优化工具可以使用 (Lint,MAT 等), 如何检测 OOM, 以及垃圾回收机制等深层次的原理. 对于性能优化来说, 如何减少 apk 体积, 资源动态加载等都是必会的. 以下是性能优化相关思维导图 (文末还有更多 Android 架构进阶的学习资料免费分享)
在体系化的学习过程中, 博客, 书籍, 视频课程都是较好的学习手段.
鉴于 Android 也是基于 java 语言的, 因此很多与 java 相关的基础也是必须掌握的, 比如《深入理解 Java 虚拟机》,《Effective Java》等相关书籍也是必读的.
Android 相关的书籍包括《Android 权威编程指南》,《Android 开发艺术探索》等, 进一步的还可以去阅读 Android 相关源码, 配合《Android 源码设计模式解析与实战》等书籍, 对阅读源码大有裨益.
同时分享一份工作 1 到 5 年以上的 Android 程序员架构进阶学习路线体系, 希望能对那些还在从事 Android 开发却还不知道如何去提升自己的, 还处于迷茫的朋友!
阿里 P8 级 Android 架构师技术脑图; 查漏补缺, 体系化深入学习提升 (详细脑图请文末领取)
全套体系化高级架构视频; 七大主流技术模块, 视频 + 源码 + 笔记
需要展开的架构学习笔记导图的可以加群找管理员免费领取: Android 架构设计 (185873940)
群内有许多技术大牛, 高手如云, 有任何问题, 欢迎广大网友一起来交流, 群内还不定期免费分享高阶 Android 学习视频资料和面试资料包~
来源: http://www.jianshu.com/p/0eda7b13e9fe