因此,在我看来,不论你基础如何,只要有应用层开发经验,有探索和研究Framework的兴趣和欲望,这就够了。只要开始,就是进步
三、第三点我要讲的是,深入到什么程度是合适的。
我在读源码的过程中,经常会跟着单个调用链越挖越深,比如在研究系统启动流程的时候,甚至到了虚拟机层面和汇编层面,但是一般来讲,我们不需要挖这么深,一来是没有必要,二来确实会花费大量精力,且很难见到成效
因此我在研究某个点的时候,会把这个点拆分成一个个的小问题,举一个具体的例子,在研究SystemServer相关流程的时候,我给自己提了这些问题
- SystemServer是如何被fork出来的
- SystemServer做了些什么事情
- SystemServiceManager是负责什么的?
- SystemServiceManager是如何创建的?
- ServiceManager是负责什么的?
- 启动服务有几种方式?他们之间有什么区别?
- SystemServiceManager和ServiceManager有什么区别?
- LocalService是负责什么工作的?
- SystemServer是服务端进程,那么谁是客户端进程?他们是如何通信的?内部机制是什么?(Binder相关的问题)
当然一上来可能提不出问题,或者不知道里面都涉及哪些重要的类,我们可以先阅读相关文章,有个大概的思路,此时就能提出一些基础的问题了,然后在阅读源码的过程中再不断提问和归纳,这也是我写源码分析文章的步骤和思路
四、第四点,我要提到的就是,要有正向反馈。
很多人不是没有定力,但就是感觉读不下去,很大的原因就是没有正向反馈。我的正向反馈来自于我的文章产出,文章阅读量和博客关注度,以及和小伙伴们可以互相交流(但大多数时候,越深入的方向,可交流的人越有限)
我也建议大家在学习framework的时候可以多多交流,产出文章和成果,激励自己继续在这条路上走下去
五、第五点,需要提醒大家的是
如果你工作中有涉及相关内容(比如插件化,音视频,launcher,setting,AudioManger等),请优先研究相关源码
如果没有涉及,你可以参考我上面提到的入手点进行研究,只有你拥有了阅读和研究的能力,才能更好的完成更有挑战性的,甚至跨入Framework开发的行列当中
六、最后
在谈一谈阅读源码的好处吧,当你研究完一两个模块之后再来看,可能体会更深
正如weishu大神所讲,研究framework的好处并不在于记住了哪些调用流程,这些不是目的(但是确实必不可少的过程哦!),我们的目的是从更深的,或者说从更整体的视角来看我们的技术 比如四大组件是我们开发中最常用的,但fragment也是我们开发中常用的,为什么它不能称得上是“第五大组件”呢?
当我研究完四大组件的源码之后,我发现了四大组件最大的特点–支持跨进程,他们的启动流程都会涉及我的进程是否启动了,是否需要先跟zygote通信去fork出进程,然后再执行组件自身的启动逻辑 因此四大组件的重量级是很重的,而frament只是依赖于activity的的一部分,远达不到如此的重量级,因此也就自然不能成为“第五大组件”了
再说回来,阅读源码的好处
- 就是在于对应用层开发能理解的更深刻;
- 当遇到一些疑难问题的时候,我们有能力通过读源码去深挖问题的原因,并最终解决问题;
- 在于整体的阅读源码能力的提升,当我们在看其他三方库源码的时候,就会更得心应手了,连AOSP这个近200G的庞然大物都能搞定,Okhttp在它面前简直就是弟弟
在学习过程中我也查阅和收集了一堆相关的参考学习文档,比如有Handler、Binder、AMS、WMS、PMS、事件分发机制、UI绘制……等等,为了便于自己查阅,将其知识点整合在一起并命名为了《Android Framework 核心学习手册》:
https://qr18.cn/AQpN4J
《Framework 核心知识点汇总手册》:https://qr18.cn/AQpN4J
Handler 机制实现原理部分:
1.宏观理论分析与Message源码分析
2.MessageQueue的源码分析
3.Looper的源码分析
4.handler的源码分析
5.总结
Binder 原理:
1.学习Binder前必须要了解的知识点
2.ServiceManager中的Binder机制
3.系统服务的注册过程
4.ServiceManager的启动过程
5.系统服务的获取过程
6.Java Binder的初始化
7.Java Binder中系统服务的注册过程
Zygote :
- Android系统的启动过程及Zygote的启动过程
- 应用进程的启动过程
AMS源码分析 :
- Activity生命周期管理
- onActivityResult执行过程
- AMS中Activity栈管理详解
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数HarmonyOS鸿蒙开发工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年HarmonyOS鸿蒙开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上HarmonyOS鸿蒙开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新
如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注鸿蒙获取)
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
mg-P8KMlDHy-1712642048714)]
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!