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