Android 进阶路线
初级阶段概况
大部分 demo 都能跑通,常见控件会用。
会用各种布局,控件的很少一部分属性,来画一个简单的界面。
会用 Activity/fragment 的生命周期来让ui在手机中显示出来。
会使用一些开源框架 Volley,Litepal,Asynctask,Glide 来使自己的项目变得简单。
会继承一个Application类,自定义自己的Application接入第三方服务。
会使用 broadcast,基本的显示广播,排队广播,基本的 Service。
会使用 ListView,GridView ,ViewPage 等稍微复杂一点的控件。
为什么会很迷茫,不知所措,因为学的东西内容太少,没有深入,不知道该往何处走。
进阶阶段需要的知识
- 熟练的自定义控件(measure,draw,layout)。
- 熟练使用 ViewHolder,recycleView(自定义 layoutManager)。
- 学习 XML 中自定义动画,学会使用系统总线传递消息,学习 rxjava。
- 熟悉 md 中的各种最新的控件,了解各种属性。
- 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
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
参考链接: