前言

曾听过很多人说Android学习很简单,做个App就上手了,工作机会多,毕业后也比较容易找工作。这种观点可能是很多Android开发者最开始入行的原因之一。

在工作初期,工作主要是按照业务需求实现App页面的功能,按照设计师的设计稿实现页面的效果。

在实现的过程中,总是会被提如下的需求:

这个字能不能大点或者醒目点儿?

颜感觉颜色和设计稿有差别,能不能再调调?

怎么老是崩溃啊,行不行啊?

......

所以,工作过一年后你会发现,自己的工作重点就是将找各种各样的组件、框架,拖拖拽拽,改改样式。在极端情况下出现了问题后(比如部分机型上崩溃,加载图片慢),也不知道该如何解决!都不好意思说自己是搞技术的。

造成这种局面的有两种原因:

1、所开发的App功能要求并不复杂,在性能上呢,也不需要极致的追求;

2、自己的意识不够,不知道如何从平凡的工作中提炼可优化的点,在向上提升方面也没有完整的规划。

从自身规划的角度讲,技术上的进阶分如下几个阶段:

1、做好业务需求的功能。这个是初级程序员就应该有的能力。

2、解决极端情况下的技术问题,比如性能优化,OOM等。稍有点规模的公司,肯定都会遇到这种问题,比如上文中说的App在部分机型上崩溃、页面加载不出来等。只是大部分程序员会觉得难以复现,或者是因为小概率事件而忽略了。在忽略这些问题的过程中,也放弃了进一步提升的可能性。还有一部分程序员是看到了这些问题,但一直不知道怎么解决,因为这些问题的产生基本都是要往底层框架去找原因,而平时只关注上层的业务逻辑代码,因而没有深入研究底层的原理,导致心有余而力不足。

3、在开发框架和效率上做文章。举个例子,很多程序员说自己的精力都在和产品的撕逼中浪费了,但有没有想过,能够通过技术手段将自己从繁杂的无技术含量的工作中解救出来?比如是否能够做到只编写一次代码,或者改个配置参数就能够做到在不同平台上运行。更高的要求是,能否将这些方案做成通用框架或产品。

其实没转行的Android程序员,大多都是希望能在这方面继续学习提升的。而上面列举的几个阶段,首先要从思考方式上去逼迫自己不断地逼迫自己,不要偷懒。其次,要想按照上述阶段发展,还需要落在实处,在具体的技术体系中不断的学习。

举个例子:

对于OOM,需要知道有哪些优化工具可以使用(Lint、MAT等),如何检测OOM,以及垃圾回收机制等深层次的原理。对于性能优化来说,如何减少apk体积、资源动态加载等都是必会的。以下是性能优化相关思维导图。



(Android性能优化思维导图)

当然,要让自己成为高级工程师,不仅仅需要自己具备性能调优的能力,其实学习的内容还有很多。还需要对Java(Kotlin)语言熟练掌握/Android SDK原理源码深入理解/高级UI绘制能力/Android热门技术/C与C++语言能力/NDK开发能力/hybrid开发(Flutter)/小程序编写能力。因为不同行业不同项目需要学习进阶的技能都不一样,要是要在细分领域找准方向!

在体系化的学习过程中,博客、书籍、视频课程都是较好的学习手段。

鉴于Android也是基于java语言的,因此很多与java相关的基础也是必须掌握的,比如《深入理解Java虚拟机》、《Effective Java》等相关书籍也是必读的。

Android相关的书籍包括《Android权威编程指南》、《Android开发艺术探索》等,进一步的还可以去阅读Android相关源码,配合《Android源码设计模式解析与实战》等书籍,对阅读源码大有裨益。



(Android学习推荐书籍)

如果你觉得自己看书太慢而且难以全部理解,博客不够系统,可以找一套进阶视频学习。没有的话我可以免费分享一套给你

详细整理在我的GitHub可以见;

Android架构视频+BAT面试专题PDF+学习笔记​

快速入手通道:(点这里)下载!!免费获取,诚意满满!!

那么如何构建完整的知识体系,深挖Android技术?

很多工作了1-3年的Android人,想够一够 3w月薪的岗位,但在底层技术上却有很大的问题:

毕业几年,表面上用过很多技术,但都没能深入学习,一年的工作经验,干了好几年。结果就是遇到实际问题时无从下手,最终还是走着普通工程师的道路,和高手的距离越来越远。

都说三年是程序员的一个坎,能否晋升或者提高自己的核心竞争力,这几年就十分关键。

技术发展的这么快,从哪些方面开始学习,才能达到高级工程师水平,最后进阶到Android架构师/技术专家?我总结了这 5大块;

我搜集整理过这几年阿里,以及腾讯,字节跳动,华为,小米等公司的面试题,把面试的要求和技术点梳理成一份大而全的“ Android架构师”面试 Xmind(实际上比预期多花了不少精力),包含知识脉络 + 分支细节。

整体架构

Java语言与原理;

大厂,小厂。Android面试先看你熟不熟悉Java语言

高级UI与自定义view;

自定义view,Android开发的基本功。

性能调优;

数据结构算法,设计模式。都是这里面的关键基础和重点需要熟练的。

NDK开发;

未来的大趋势,高薪必会。

前沿技术;

组件化,热升级,热修复,框架设计

我把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节。

详细整理在我的GitHub可以见;

Android架构视频+BAT面试专题PDF+学习笔记​

快速入手通道:(点这里)下载!!免费获取,诚意满满!!

网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。

最新文章

  1. 地图四叉树一般用在GIS中,在游戏寻路中2D游戏中一般用2维数组就够了
  2. 在 Linux 下搭建 Git 服务器
  3. centos7 ip地址设置
  4. css文件都写在一个里面还是每个页面都引用单独的css样式好?
  5. HW6.15
  6. 利用Graphviz 画结构图[转]
  7. SPOJ 4206 Fast Maximum Matching (二分图最大匹配 Hopcroft-Carp 算法 模板)
  8. CodeForces 620A Professor GukiZ's Robot
  9. c语言基础学习06
  10. 使用reflector对.NET反编译
  11. C++进程间通信的十一种方法
  12. js禁止鼠标右键功能
  13. Hadoop2.2.0分布式安装配置详解[3/3]
  14. python http 请求 响应 post表单提交
  15. CTags配好后仍找不到函数定义的问题
  16. kubelet源码分析(version: git tag 1.7.6)
  17. Github for Windows 登录时报代理问题?
  18. numpy中arange()和linspace()区别
  19. 拓扑排序 Topological Sort
  20. python中函数的定义和详细的使用方法

热门文章

  1. Linux下查看文件内容的几种常用命令
  2. Debezium实现多数据源迁移(一)
  3. 如何在 ASP.Net Core 中使用 Lamar
  4. FreeBSD 乃至开源界中的孔乙己 再论苦难哲学之一
  5. Ubuntu更换python默认版本
  6. 怎么用Markdown在github上写书,并用pages展示
  7. android 调用js,js调用android
  8. UML类图画法整理
  9. 《Selenium自动化测试实战:基于Python》之 Selenium IDE插件的安装与使用
  10. go每日一库 [home-dir] 获取用户主目录