Android 进阶路线

Android 进阶路线

初级阶段概况

大部分 demo 都能跑通,常见控件会用。

会用各种布局,控件的很少一部分属性,来画一个简单的界面。

会用 Activity/fragment 的生命周期来让ui在手机中显示出来。

会使用一些开源框架 Volley,Litepal,Asynctask,Glide 来使自己的项目变得简单。

会继承一个Application类,自定义自己的Application接入第三方服务。

会使用 broadcast,基本的显示广播,排队广播,基本的 Service。

会使用 ListView,GridView ,ViewPage 等稍微复杂一点的控件。

为什么会很迷茫,不知所措,因为学的东西内容太少,没有深入,不知道该往何处走。

进阶阶段需要的知识

  1. 熟练的自定义控件(measure,draw,layout)。
  2. 熟练使用 ViewHolder,recycleView(自定义 layoutManager)。
  3. 学习 XML 中自定义动画,学会使用系统总线传递消息,学习 rxjava。
  4. 熟悉 md 中的各种最新的控件,了解各种属性。
  5. APP 的启动流程,控件绘制流程,传感器数据收集,manifest 的运行机制,跨应用调用机制…..

不能浮躁,要沉得住气,谦虚学习,指定好计划,走好进阶的这一步。再深一步,还会有更多的知识等着自己去发现

另外角度的进阶

一: 开发技能

你可以看成是一般的编程技能,这方面你可以从:

编程语言的熟练掌握

面向过程编程思想

面向对象的思想

函数式编程思想

设计模式

算法与数据结构

网络编程,TCP/IP 协议

重构

版本管理(Git 等)

等方面的检查和提高自己

更详细的技能树,请自己搜索

二: 移动应用开发

你可以看成是 App 开发

估计这可能是你更感兴趣的

这方面你可以从: MVC 这成三个方面来对照检查下

M: 数据层

移动应用数据结构特点

数据存储 :SQLite数据库,文件存储

数据格式: XML 格式,JSON格式 序列化与反序列化

数据查询: 移动应用一般数据库主要是 用SQLite(说回来,单是 SQLite 数据库,就可以花不少时间来深入学习下,因为对一个应用来说,数据基本是核心)

V: 视图层

移动应用界面特点

移动应用构建界面常用方法

移动应用交互特点

移动应用动画

系统 UI 系统特点,优点,缺点及局限

C: 控制层

移动应用控制层特点

控制层的生命周期

多线程,UI 线程,后台线程

E: 事件层

事件处理,触控事件,手势,事件响应链

三: Android 开发

工具篇 - 工欲善其事,必先利其器

Android Studio 掌握用得怎么样了?

Adb 及相关工具会用吗?

Gradle 构建系统呢?

文档篇 - 看 Android 官方是怎么定义开发各种技能的,相信常看 Android 开发者官方网站,你会收益良多,我下面写的也不必看了.

系统篇

Android 多线程编程,异步编程特点 - Loop,Handler,IntentService,Broadcast,MessageQueue

Android UI 框架特点,优势和不足

然后你再按 MVC 将 Android 各部分再分析分析,总结总结.

作者:李板溪
链接:https://www.zhihu.com/question/28425576/answer/40862900
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

其他角度

第一个建议

对于一个junior developer,如果想往上走,在强化知识体系的之前,我往往建议先完善自己在debug tools上的经验。

比如:
网络debug tools: Charles, mitmproxy, Stetho
内存泄露:Memory Analyser, Leak Canary
Overdraw: 手机上的Drawing Settings, AVD Manager/Layout, Stetho
数据库和cache: Stetho,SqliteManager
还有最原始的,利用logcat打log,分析log并且知道各种参数,比如-v time显示时间,-s做filter等等

中国有句古话,工欲善其事,必先利其器。将各种debug工具掌握好,有利于更快地从Junior level提高上来。

第二个建议

提高自我表达能力。我在面试facebook的时候(别问细节了,没过),有一个题目很有意思,来说一个你比较了解的工具或者api,whatever什么玩意都可以,看你能否有逻辑地、准确地将某lib的整个框架描述清楚,比如优缺点,比如运行流程和坑。在这里面,ABCD的某个环节中,你可以说你在B上内部逻辑不清楚,但是input 和output一定要说出来,如果能说出limitaion就更好了。

这项能力的好处是,“准确而有逻辑地表达”往往需要清晰的头脑、丰富的知识储备,这项训练在programming中是非常有好处的,我发现凡是口头表达逻辑很清晰的人,编程coding逻辑感也非常强。有好的逻辑思维的人,成长是极快的。

第三个建议

如果追求精通,不要一上来就追求对整个Android的精通,要先追求模块的精通。有些人强于写googlemap,有些人对Volley库极为熟悉甚至被merge过很多pr,有些人可能对动画非常了解,甚至有些人专门研究android相机保存图片等。其实等你很熟悉一两个模块后,你会发现其他的东西很容易触类旁通,就算不看代码,猜也猜得到。

第四个建议

提高英语能力。以前在国内只用baidu,后来出国了之后用英语才发现,简直是多长了一个脑子的感觉,高质量的文章比比皆是。所以如果英语好,在IT skill上的进步可能会快好几倍,真的不夸张。

作者:耿锐
链接:https://www.zhihu.com/question/28425576/answer/91643285
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

参考链接:

https://www.zhihu.com/question/28425576/answer/91431630

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值