学习Android Framework ? 入门教程和深入源码开发揭秘这里全都有

前言

Android系统一共分为4层

其中AndroidFramework

是应用程序框架层(framework):
应用程序使用的系统API框架,提供各种组件和服务,包括ActivityManager,WindowManager,ViewSystem等。

Framework在Android系统中处于一种承上启下的地位。承上的意思是框架为上层应用提供api和运行机制;启下的意思是框架屏蔽了下层的复杂性,为上下层的交互定义了一套规范。

为什么学习Framework

通常作为一个Android APP开发者,我们并不关心Android的源代码实现,不过随着Android开发者越来越多,企业在筛选Android程序员时越来越看中一个程序员对于Android底层的理解和思考,这里的底层主要就是Android Framewok中各个组件的运行原理,例如Binder的运行机制、ServiceManager的作用等等。

这里列一段Binder的相关知识

Binder 通信方式进程A给进程B发送一段信息,流程如下:

在这里插入图片描述

1、进程A通过系统调用拷贝内容到内核空间。 2、由于内核空间与进程B做了内存

映射,因此进程B能够知道内核空间的信息。

从上可知,通过Binder,进程A给进程B发送信息只进行了一次数据拷贝。 对比其它IPC方式可知


在这里插入图片描述

另外,传统的IPC方式只能由使用者填入UID/PID,容易被外界仿造、篡改。而Binder内置为发送

者添加UID/PID,更安全。

Android Binder 使用场合

似乎平时很少使用Binder呢?其实不然,我们不知不觉中已经用了它。 上图展示了Binder使用

C/S模式,也就是S(Server)端提供服务入口,C(Client)调用服务提供的接口,进而两者可以进

行通信。 先来看看一段手机马达震动的代码:

Vibrator vibrator = (Vibrator)getSystemService(Context.VIBRATOR_SERVICE);

vibrator.vibrate(1000);

调用了Context里的方法:getSystemService,指定获取名为:VIBRATOR_SERVICE 的服务,拿到服务后调用 vibrate(xx)即可实现手机震动。 每个App都能通过访问这段代码来实现手机震动,

可想而知拿到的"震动服务"一定是某个地方统一提供的。 我们知道,Android系统启动后会开启名为:system_server的进程,顾名思义:系统服务,提供给所有App使用的公共服务进程。 “震动服务"就是跑在该进程里的。 当调用getSystemService(xx)获取"震动服务时”,相当于调用者

(App进程)与system_server(服务提供进程)进行了一次IPC过程(实际比较复杂,简单说是:

通过ServiceManager获取Binder,该Binder连接system_server,ServiceManager跑在另外的进程

如果你最近在找工作或者有关注Android行业的招聘这一块就会发现,现在很多公司,特别是大厂在招聘高工或者架构师的时候都会将熟悉framework原理或源码列为招聘要求之一。

在这里插入图片描述

在这里插入图片描述
像涉及到车载之类的也需要会Framework。所以Framework因为它涉及的广,理所当然就业面也广。

如何学习?

如果你是因为缺少学习资料,而我正好薅到这本阿里十年技术专家联合打造的Android Framework学习指南。

由于文章内容比较多,篇幅有限,资料已经被整理成了PDF文档,有需要《Android Framework进阶学习指南》完整文档的可扫描下方卡片免费获取~

《Android Framework 开发揭秘》

目录

img

第一章 系统启动流程分析

​ ● 第一节 Android启动概览

​ ● 第二节 init.rc解析

​ ● 第三节 Zygote

​ ● 面试题

img

第二章 Binder解析

​ ● 第一节 宏观认识Binder

​ ● 第二节 binder的jni方法注册

​ ● 第三节 binder驱动

​ ● 第四节 数据结构

​ ● 第五节 启动service_manager

​ ● 第六节 获取service_manager

​ ● 第七节 addService流程

​ ● 第八节 Binder面试题全解析

第三章 Handler解析

​ ● 第一节 源码分析

​ ● 第二节 难点问题

​ ● 第三节 Handler常见面试题

第四章 AMS解析

​ ● 第一节 引言

​ ● 第二节 Android架构

​ ● 第三节 通信方式

​ ● 第四节 系统启动系列

​ ● 第五节 AMS

​ ● 第六节 AMS面试题解析

img

第五章 WMS解析

​ ● 第一节Activity与Window相关概念

​ ● 第二节 Android窗口管理服务WindowManagerService计算Activity窗口大

​ ● 第三节Android窗口管理服务WindowManagerService对窗口的组织方式分析

​ ● 第四节 Android窗口管理服务WindowManagerService对输入法窗口(Input

​ ● 第五节 Android窗口管理服务WindowManagerService对壁纸窗口(Wallpap

​ ● 第六节Android窗口管理服务WindowManagerService计算窗口Z轴位置的过程分析

​ ● 第七节Android窗口管理服务WindowManagerService显示Activity组件的启

​ ● 第八节Android窗口管理服务WindowManagerService切换Activity窗口(A

​ ● 第九节 Android窗口管理服务WindowManagerService显示窗口动画的原理分析

img

猜你喜欢

转载自blog.csdn.net/Android23333/article/details/130803808