Android Framework源码分析

阅读Framework的源码可以让你理解Android常用组件的实现原理,在写代码时可以胸有成竹。业界许多技术的实现原理如果脱离Android源码是无何说起的,比如热修复、插件化。

当你阅读完一遍AndroidFramework层代码后,相信其他的框架的源代码对你来说都是小儿科。

如何阅读源码呢?

每个人阅读源码的方式都不一样。我呢,并没有把Android源代码全部下载下来编译,我只是下载了Framework层base的代码 : https://android.googlesource.com/platform/frameworks/base/

我查看的方式也很简单,就是使用IntelLij IDEA。所以就不存在想看哪里跳哪里的情况,一个类里面的跳转直接看类结构、跨类我一般都是全局搜索。我感觉这样看起来也是ok的。熟练后效率也不低。

Binder

这是AndroidFramework层一个非常核心的东西,在阅读源码时你会发现,哪里都有它,所以,要想好好理解源码,得先把它弄明白了。网上介绍Binder的文章很多,这里我谈一下我所理解的Binder :

我所理解的Binder机制

四大组件源码

Android四大组件是我们日常开发中最常用的。我们天天和都在用他们提供的接口。所以,如果你深入源码,了解一下他们实现的机制,那么你在使用它们的时候是不是更有一种做主人的感觉呢?哈哈

从源码理解BroadcastReceiver的工作过程

从源码理解ContentProvider的工作过程

一张图把Android Activity启动过程安排的明明白白

从源码理解Service的工作过程

Android视图层源码分析

这个系列的文章只是大致了解一下Android视图层的工作原理, 并不会深入去探讨源码中的某个点, 毕竟整个视图层过于复杂,如果没有原因的去抓住分析某个细节并没有太大的意义。

UI视图的渲染原理

Window是Android提供的用来构建UI的类,它是承载UI的基本单元。我们在正常开发中一般不会对他直接操作,不过我们所使用的Activity/Dialog等UI的展示都是依托于Window
所以想要深入分析Android UI的展示原理,其实沿着Window这条线就可以了(目前Android Framework所提供的唯一Window实现类是PhoneWindow), 首先我们通过剖析Window的组成来大致了解一下Window:

深入剖析Window组成

上面这篇文章只是简单的讲了Window的添加过程和ActivityPhoneWindow的UI组成结构。那Window的UI到底是怎么绘制的呢?

其实是通过Surface来显示的。每一个窗口都有一个自己的Surface,可以把它理解为一块画布,应用可以通过CanvasOpenGL在上面作画。Surface的具体显示由SurfaceFlinger负责完成。SurfaceFlinger可以
将多块Surface的内容按照特定的顺序(Z-order)进行混合并输出到FrameBuffer,从而显示出用户所见到的UI。所以下面我们要好好研究一下Surface,首先看一下它是怎么创建的:

Android的UI显示原理之Surface的创建

视图的基本承载单元Surface已经准备完毕,那么怎么渲染一个Surface呢?

Android的UI显示原理之Surface的渲染

上面3篇文章中的源码分析几乎包含了整个视图层源码的所有关键对象,下面总结一下这3篇文章:

Android的UI显示原理总结

UI视图的用户交互事件处理原理

触摸事件原理分析

下面这篇文章分析一下: 触摸事件怎么产生和收集的? Activity.dispatchTouchEvent()是怎么调用到的?

Android触摸事件全过程分析

弄清原理后,来简单走查一遍Android事件分发机制吧:

View事件传递机制源码走查

下载说明:
1、本站所有资源均从互联网上收集整理而来,仅供学习交流之用,因此不包含技术服务请大家谅解!
2、本站不提供任何实质性的付费和支付资源,所有需要积分下载的资源均为网站运营赞助费用或者线下劳务费用!
3、本站所有资源仅用于学习及研究使用,您必须在下载后的24小时内删除所下载资源,切勿用于商业用途,否则由此引发的法律纠纷及连带责任本站和发布者概不承担!
4、本站站内提供的所有可下载资源,本站保证未做任何负面改动(不包含修复bug和完善功能等正面优化或二次开发),但本站不保证资源的准确性、安全性和完整性,用户下载后自行斟酌,我们以交流学习为目的,并不是所有的源码都100%无错或无bug!如有链接无法下载、失效或广告,请联系客服处理!
5、本站资源除标明原创外均来自网络整理,版权归原作者或本站特约原创作者所有,如侵犯到您的合法权益,请立即告知本站,本站将及时予与删除并致以最深的歉意!
6、如果您也有好的资源或教程,您可以投稿发布,成功分享后有站币奖励和额外收入!
7、如果您喜欢该资源,请支持官方正版资源,以得到更好的正版服务!
8、请您认真阅读上述内容,注册本站用户或下载本站资源即您同意上述内容!
原文链接:https://www.dandroid.cn/18868,转载请注明出处。
0

评论0

显示验证码
没有账号?注册  忘记密码?