Android开发给人的感觉是门槛很低,因此有不少人会说Android很简单,实际上Android开发说简单也不简单。简单是因为它入门快、上手简单;不简单是因为Android的知识点比较琐碎,如何从琐碎的知识点中理解Android工程师的本质并形成一个完整的知识体系,这是不简单的。

相信不少开发者会有这种感觉,Android的好多知识点自己都知道,但又不是特别懂,这就是碎片化知识未形成一个完整体系的表现。如何对Android建立全面的理解?需要一种有效的学习方式,在学习过程中知道哪些知识点需要深挖、哪些知识点需要融会贯通、哪些知识点了解即可。黑马程序员Android学科参考众多学习者和开发者在Android应用层的学习过程,总结了一个适合大多数人的学习路线,整体路线如下图所示。

初级工程师

1. Java基础知识

对于完全没接触过Android开发的人,需要怎么学习才能成为初级工程师呢?这时候,黑马程序员本着毕业学员超越非一般Android工程师的水准要求,认为入门阶段需要掌握Java基础、一定的前端和JavaWeb知识。自学者通过一年左右的时间学习(此阶段在黑马程序员只需2个月,大大缩短了时间代价),相信大多数人都可以达到中级工程师的水平。中级工程师月薪可以达到15K。

总结来说,Java基础阶段要具备“Android工程师成长路线”图中“Java基础知识基本储备”模块所涉及内容。对Java基本的语法、面向对象及常用API有比较深入的理解。数据封装、读取写入和网络编程对任何领域而言,都是非常重要的数据层操作,因此, 要对集合、IO流、网络编程要非常熟悉。

2. 前端基本知识储备

大体上说,需要掌握“Html+CSS+JavaScript基础”模块知识,虽然前端知识不是必须,且在Android一般开发中用的不多,但对于后期结合H5混合开发能力的提升是有帮助的。

3.JavaWeb与数据库知识储备

这一部分的知识难度偏大,但与Android开发关联甚大, Android和JavaWeb项目的交互无处不在,如果想要实现Android在网络上与JavaWeb的交互,就要把JavaWeb的项目方法暴露在网络中,然后供Android的这一端调用,实现交互。

4.Android 核心基础

对Android的核心基本知识、结构、代码规范等都有了一个大概的了解,就可以写出一些简单的Activity了。这个阶段,Android开发很简单很好玩,通过在xml中摆放一些按钮文本框什么的就可以做一些界面了。

技术要求:

以Android技术知识来说,需要掌握:四大组件如何使用、如何创建Service、如何进行布局、简单的自定义View、动画等常见技术,将导图中的“Android核心基础”涵盖的知识点掌握了,就达到了这个层级的要求。另外,学好Android,官方文档是必须看的,既全面又权威。

总结一下,Android核心基础阶段,需要掌握的内容比较多,范围比较广,同时,要花比较长的时间把Android官方文档中的training和guide看一看,通过记笔记的方式做总结是不错的方式。

中级工程师

经过上一阶段的学习,跨越到成为Android中级工程师。到了中级工程师,已经可以在公司里胜任大部分开发工作,但是一些很重要的任务还不能一人承担起来,这时候需要学习的内容就很多了,如下所示:

◆ AIDL:熟悉AIDL,理解其工作原理,懂transact和onTransact的区别;

◆ Binder:从Java层大概理解Binder的工作原理,懂Parcel对象的使用;

◆ 多进程:熟练掌握多进程的运行机制,懂Messenger、Socket等;

◆ 事件分发:弹性滑动、滑动冲突等;

◆ 玩转View:View的绘制原理、各种自定义View;

◆ 动画系列:熟悉View动画和属性动画的不同点,懂属性动画的工作原理;

◆ 懂性能优化、熟悉mat等工具

◆ 懂点常见的设计模式

这个阶段须掌握图中“Android核心高级技术”;还要多阅读Android源码,阅读官方文档并尝试写技术文章,需要有一定技术深度和自我思考。在这个阶段的学习过程中,有2个点是比较困扰大家的,一个是阅读源码,另一个是自定义View以及滑动冲突。

如何阅读源码呢?阅读源码的时候不要深入代码细节不可自拔,要关注代码的流程并尽量挖掘出对应用层开发有用的结论。另外仔细阅读源码中对一个类或者方法的注释,在看不懂源码时,源码中的注释可以帮你更好地了解源码中的工作原理,这个过程虽然艰苦,但是别无他法,然而这个过程的收获也是其他学习方式不可替补的。

如何玩转自定义View呢?不要通过学习自定义view而学习自定义view。为什么这么说呢?因为自定义view的种类太多了,各式各样的绚丽的自定义效果,如何学的玩呢!要透过现象看本质,更多地去关注自定义view所需的知识点,这里做如下总结:

◆搞懂view的滑动原理

◆ 搞懂如何实现弹性滑动

◆ 搞懂view的滑动冲突

◆ 搞懂view的measure、layout和draw

◆ 然后再学习几个已有的自定义view的例子

◆ 最后就可以搞定自定义view了,所谓万变不离其宗

大概再需要1◆2年时间,即可达到高级工程师技术水平。注意,达到高级工程师技术水平不代表可以立刻成为高级工程师(受机遇、是否跳槽的影响),但是技术达到了,成为高级工程师只是很简单的事。

技术要求:

◆ 稍微深入的知识点: AIDL、Messenger、Binder、多进程、动画、滑动冲突、自定义View、消息队列等。

高级工程师

成为了梦寐以求的高级工程师,月薪可达到20k。这个时候的Android水平已经不错了,但是要达到资深工程师,月薪可以达到30k+。

为了成为Android资深工程师,需要学习的东西就更多了,并且有些并不是那么具体了,如下所示:

◆ 继续加深理解“稍微深入的知识点“中所定义的内容

◆ 了解系统核心机制:

1. 了解SystemServer的启动过程

2. 了解主线程的消息循环模型

3. 了解AMS和PMS的工作原理

4. 能够回答问题”一个应用存在多少个Window?“

5. 了解四大组件的大概工作流程

6. …

◆ 基本知识点的细节:

1. Activity的启动模式以及异常情况下不同Activity的表现

2. Service的onBind和onReBind的关联

3. onServiceDisconnected(ComponentName className)和binderDied()的区别

4. AsyncTask在不同版本上的表现细节

5. 线程池的细节和参数配置

6. …

◆ 熟悉设计模式(常用设计模式)架构意识。

使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。项目中合理的运用设计模式可以完美的解决很多问题,每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案,这也是它能被广泛应用的原因。

这个时候已经没有太具体的学习方法了,无非就是看书、看源码和做项目,平时多种总结,尽量将知识融会贯通从而形成一种体系化的感觉。同时这个阶段对架构是有一定要求的,架构是抽象的,但是设计模式是具体的,所以一定要加强下设计模式的学习。

技术要求:

◆ 稍微深入的知识点

◆ 系统核心机制

◆ 基本知识点的细节

◆ 设计模式和架构

◆ 高水准书籍等

资深工程师

这个阶段的程序员也许并没有太具体的学习路线了。

关注黑马程序员Android学科了解更多Android成长攻略。黑马程序员在课程的设计上全面覆盖企业Android开发的各个方面。课程中将对企业开发覆盖类别中的经典项目进行剖析,全面提升学员技术和综合应用能力。想成为高薪Android中高级工程师,就来黑马程序员学习最具潜力的移动端Android技术。

本文转自:Android工程师成长路线全攻略

Android工程师成长路线相关推荐

  1. 自动化测试python 成长路线_自动化测试工程师成长路线规划

    随着互联网产品功能的迭代更新,对软件质量和数据安全也逐渐提出了更高的要求.因此,测试在目前的地位和功能可以说是越来越不可或缺了.虽然目前的就业市场继续大量的测试人才,但是低端的测试人员还是比较饱和的. ...

  2. Android工程师成长之路

    见习工程师 实习生(student engineer) 1.掌握基本的Android应用开发和调试技能,了解Android SDK,会用Eclipse开发工具: 2.掌握基础控件.UI布局,能够处理多 ...

  3. 从小白到中级高级软件测试工程师成长路线!--(下篇)

    上篇文章主要给大家介绍了成长路线的中级阶段,这篇文章接着上一篇文章,主要写一下中级和高级的阶段,需要看全文的可以接着上一篇文章进行查看,文章在我的博客里.同样的,思维导图我放在文末,可能上传之后会看不 ...

  4. 完整的机器学习工程师成长路线

    文章目录 机器学习工程师知识储备 1编程语言:Python 2 数学基础 3 数据结构和算法 4 计算机网络和操作系统 5 个人项目经历 6 数据分析/挖掘 7 传统机器学习 8 深度学习 9 深度学 ...

  5. 从小白到中级高级软件测试工程师成长路线!--(上篇)

    很多同学私信问我,自学软件测试到底该如何下手,都说软件测试入门容易,为什么自己会卡住某个点上之类的问题,探究这样的问题,根本上还是学习的内容不够系统和全面,想到哪里就学哪里,对自己最终所要达到的目标一 ...

  6. 转载自豆瓣,前端工程师成长路线

    前端要学习三个部分:HTML,CSS,JavaScript(简称JS),因此首先明确三个概念: HTML是内容层,它的目的是表示一个HTML标签在页面里是个什么角色. CSS是样式层,它的目的是表示一 ...

  7. android 工程师级别划分及学习路线

    前言 看到一篇文章中提到"最近几年国内的初级Android程序员已经很多了,但是中高级的Android技术人才仍然稀缺",这的确不假,从我在百度所进行的一些面试来看,找一个适合的高 ...

  8. Java工程师如何做好职业规划和成长路线?

    成为一名Java开发工程师是很多学习Java的人的初衷,但任何职业都需要有职业规划和成长路线,只有这样才能不断进步,向更高的层次进阶.下面小千就从以下三点上建议Java工程师如何做好职业规划和成长路线 ...

  9. Android 工程师进阶手册(8 年 Android 开发者的成长感悟)

    AndroidDeveloperAdvancedManual 项目地址:Skykai521/AndroidDeveloperAdvancedManual 简介: Android 工程师进阶手册(8 年 ...

最新文章

  1. Spring Cloud第四章:熔断器Hystrix
  2. 4.3.5 子网划分和子网掩码
  3. MultiResUNet笔记
  4. spring入门(11)-spring与hibernate整合完成增删改查的操作(封装HibernateTemplate模版类对象)
  5. NetBeans 时事通讯(刊号 # 22 - Aug 18, 2008)
  6. inux系统中如何进入退出vim编辑器
  7. ajax和fetch哪个好,axios和ajax,fetch的区别
  8. python中画圆的代码_Python使用matplotlib绘制圆形代码实例
  9. 极客大学产品经理训练营:数据分析 第16课总结
  10. Java类的三大特性
  11. SPSS Modeler 数据审核学习笔记
  12. 制作删不掉的php唯读档,ppt母版logo删除不了怎么办
  13. 给hexo主题添加背景及更改字体颜色(next的Mist主题)
  14. Mac字体路径,解决matplotlib中文显示问题,超级好用~
  15. 虹科PCAN在工程机械中的应用
  16. Android弹出关闭输入法
  17. 构造中小型园区网实训案例
  18. 跟熊浩学沟通30讲读后感_跟着熊浩学沟通的笔记
  19. transfrom用法
  20. mysql中vlookup函数_excel精确匹配vlookup用法(数据库属性匹配)

热门文章

  1. 搞不定Serverless?让你秒懂掌握Profiling让一份程序优雅自适应
  2. 解决echarts图表tooptip被挡住的问题
  3. PMP知识点总结-第十一章:项目风险管理
  4. 微信开放平台 错误码61007: api is unauthorized to component
  5. 带上传进度的文件上传
  6. MFC之文档/视图结构应用程序
  7. 6-26 统计专业人数 (15分)
  8. Qt 表格导出数据为 excel html csv
  9. 12.4 C++常引用
  10. ElasticSearch近实时搜索的实现