前言
看到一篇文章中提到“最近几年国内的初级Android程序员已经很多了,但是中高级的Android技术人才仍然稀缺“,这的确不假,从我在百度所进行的一些面试来看,找一个适合的高级Android工程师的确不容易,一般需要进行大量的面试才能挑选出一个比较满意的。
为什么中高级Android程序员不多呢?这是一个问题,我不好回答,但是我想写一篇文章来描述下Android的学习路线,期望可以帮助更多的Android程序员提升自己。 由于我也是从一个菜鸟过来的,所以我会结合我的个人经历以及我对Android学习过程的认识来写这篇文章,这会让这篇文章更加真实,而并非纸上谈兵。
我的工作经历
前面说到,我也是从一个Android菜鸟过来的。其实这句话放在任何人的身上都是适用的,即大家都是一步步过来的,因此作为初学者也不必因为技术差而郁闷,同理,高手也不要看不起一些所谓的菜鸟,因为这不公平,技术只有在同等的工作年限上才具有一定的可比性,也许你眼中的菜鸟只是个工作半年的新手,而你已经工作5年,可想而知,这根本不具有可比性, 搞不好别人5年后可以达到比你更高的技术高度。
下面我来分享一下这些年我的一些总结。由于篇幅问题不展示太多,有需要的可以在我的【GitHub 】中领取,里面包含不同方向的自学编程路线、面试题集合/面经、及系列技术文章等,资源持续更新中…
自行下载领取链接:【https://links.jianshu.com/go?to=https%3A%2F%2Fjq.qq.com%2F%3F_wv%3D1027%26k%3DBRZhpPkt】
一.View的绘制
1)setContentView()的源码分析
2)SnackBar的源码分析
3)利用decorView机制实现底部弹出框
4)换肤框架(一)之Support v7库解析
5)小红书欢迎页的视差效果实现
6)换肤框架(二)之换肤框架实现解析
7)View和ViewGroup的绘制原理源码分析
8)自定义ViewGroup(一)之卡牌
二.事件的分发
1)从场景到源码分析事件分发
2)事件分发实例之侧滑菜单
3)自定义behavior的源码分析
4)玩转自定义behavior之顶部停靠
三.动画框架
1)属性动画的基础使用方法
2)属性动画源码分析(Choreographer"编舞者")
3)直播间气泡效果
4)共享元素转场动画
四.Handler机制
1)Handler,MessageQueue,与Looper三者关系分析
2)HandlerThread源码分析
3)IntentService源码分析
4)Handler常见应用场景和常见问题分析
五.Binder机制
1)从framework分析AIDL生成文件
六.流行框架源码分析
1)EventBus3.0源码解析
2)AsynTask源码分析
3)编译期注解的使用例子分析
4)Butterknife源码分析(一)
5)Butterknife源码分析(二)
6)多进程的sharedprefrence解决方案DPreference
7)Volley源码解析
8)OkHttp源码分析
9)Retrofit2源码解析
10)AOP在代码中的使用分析
11)Builder建造者设计模式
12)Observer观察者设计模式
13)责任链设计模式
14)Proxy代理设计模式
15)Strategy策略模式
16)Decorator装饰模式
17)英语流利说文件下载器源码解析
18)UnifyStorage统一的数据库存储,key-value存储,mock网络数据的一个库
七.性能优化
1)冷启动优化
1.1.APP启动分析工具(TraceView,Systrace)
1.2.布局优化(扁平化,Merge的使用,ViewStub的使用)
1.3.APP启动速度优化实例解析
1.4.各种布局的性能对比(LinerLayout,RelativeLayout)
2)内存优化
2.1.LeakCanary原理分析
2.2.Android DiskLruCache 源码解析 硬盘缓存的绝佳方案[转]
2.3.LruCache源码分析
2.4.内存泄漏的一些坑
2.5.MAT内存泄漏分析(一)
2.6.MAT内存泄漏分析(二)
3)网络优化
4)图片压缩性能优化
5)数据传输性能优化
6)减小APK体积
7)渲染优化
7.1.UI卡顿原理分析
7.2.UI卡顿检测分析
7.3.BlockCanary原理分析
7.4.卡顿优化实例解析
8)电量优化
8.1.APP耗电分析方法与工具(第三方,Google官方Battery Historian)
8.2.Android Doze源码分析
8.3.AlarmManager研究 [转]
8.4.在Android Lollipop中使用JobScheduler
8.5.JobScheduler的源码分析
8.6.耗电优化实例解析
9)Android ANR在线监控原理
10)AndroidGodEye解析之帧率(fps)
11)AndroidGodEye解析之流畅度(sm)
12)即将推出GodEye的分析,敬请期待...
八.网络编程
1.TCP问题分析
2.OkHttp源码分析
3.网络传输数据加密策略(对称加密AES,DES,非对称加密RSA)
4.二进制协议(mqtt协议),协议编解码(tlv编解码)
5.Java Socket编程(IO,NIO)
6.Java多线程编程(队列,同步锁,线程池)
7.Android中使用HttpDns
九.Android推送SDK
1.SDK架构设计
2.心跳策略
3.重连策略
4.tcpdump抓包分析
5.进程保活
6.多进程通信
7.TCP连接多路复用
8.Android系统休眠
9.TCP网络问题
10.DHCP租约到期自动续租问题导致TCP连接异常
十.FrameWork层源码的分析
1)应用程序内Activity的启动流程
2)startService的流程分析
3 ) 注册广播接收器的源码分析
4)广播发送过程源码解析
5)广播处理过程源码解析
6)AssetManager加载资源过程
7)ClassLoader及dex加载过程
8)插件化框架VirtualApk之初始化
9)插件化框架VirtualApk之插件加载
10)插件化框架VirtualApk之Activity启动
11)插件化框架VirtualApk之Service管理
12)热修复框架AndFix完全解析
13)InstantRun源码分析[转]
- Google新组件下的架构思考
学习方法
阅读进阶书籍,阅读Android源码,阅读官方文档并尝试自己写相关的技术文章,需要有一定技术深度和自我思考。在这个阶段的学习过程中,有2个点是比较困扰大家的,一个是阅读源码,另一个是自定义View以及滑动冲突。
如何阅读源码呢?这是个头疼的问题,但是源码必须要读。 阅读源码的时候不要深入代码细节不可自拔,要关注代码的流程并尽量挖掘出对应用层开发有用的结论。另外仔细阅读源码中对一个类或者方法的注释,在看不懂源码时,源码中的注释可以帮你更好地了解源码中的工作原理,这个过程虽然艰苦,但是别无他法。
如何玩转自定义View呢?我的建议是不要通过学习自定义view而学习自定义view。为什么这么说呢?因为自定义view的种类太多了,各式各样的绚丽的自定义效果,如何学的玩呢!我们要透过现象看本质,更多地去关注自定义view所需的知识点,这里做如下总结:
- 搞懂view的滑动原理
- 搞懂如何实现弹性滑动
- 搞懂view的滑动冲突
- 搞懂view的measure、layout和draw
- 然后再学习几个已有的自定义view的例子
- 最后就可以搞定自定义view了,所谓万变不离其宗
大概再需要1-2年时间,即可达到高级工程师的技术水平。我个人认为通过《Android开发艺术探索》和《Android群英传》可以缩短这个过程为0.5-1年。 注意,达到高级工程师的技术水平不代表就可以立刻成为高级工程师(受机遇、是否跳槽的影响),但是技术达到了,成为高级工程师只是很简单的事。
技术要求:
- 稍微深入的知识点
AIDL、Messenger、Binder、多进程、动画、滑动冲突、自定义View、消息队列等 - 书籍推荐
《Android开发艺术探索》、《Android群英传》
尾声
改变人生,没有什么捷径可言,这条路需要自己亲自去走一走,只有深入思考,不断反思总结,保持学习的热情,一步一步构建自己完整的知识体系,才是最终的制胜之道,也是程序员应该承担的使命。
以上进阶Android高级工程师系统学习资料可以免费分享给大家,需要完整版的朋友,点这里可以看到全部内容。
如果需要PDF版本可以在群文件夹里,自行领取!
-
或者在群文件夹中里,自行下载直达领取链接:【https://links.jianshu.com/go?to=https%3A%2F%2Fjq.qq.com%2F%3F_wv%3D1027%26k%3DBRZhpPkt】
网友评论