android 从顶层到底层 学习笔记--- framework架构

一。整体把握

framework架构图

android 从顶层到底层 学习笔记--- framework架构_第1张图片

分层:application framework,binder IPC, system service

application framework 通过 binder IPC 与 system service 通信

整个framework架构 是为了实现 application与 system的进程通信,

分层的目的和作用:类似网络分层

实现 上层与下层 之间固定的通信模式

双方的同层 之间采用相同的协议

二。具体学习

1.startActivity 系统级的API 

流程图

1.application framework 调用 System Service AMS:

2.AMS 调用上层 framework 创建Activity对象,并调用其生命周期回调方法

android 从顶层到底层 学习笔记--- framework架构_第2张图片

android 从顶层到底层 学习笔记--- framework架构_第3张图片

总结:系统创建MyActivity对象并调用其生命周期函数,用到控制反转IOC

高层通过反射创建低层对象,高层调用低层的回调方法

开发者没有new 出对象, 也不能直接控制Activity对象的生命周期,

系统控制Activity对象的生命周期

onCreate/onStart...这些生命周期方法,是模版模式。

模版模式 是父类中有一个模版方法,这个方法里调用了一些自身的方法来实现一个功能,

这些方法中,一些是对于所有子类来说,是一致的,不变的, 可用fianl修饰

      而另一些方法,对于不同的子类,有不同的代码实现,是变化的,

针对这些可变化的方法,子类自己去代码实现,它们往往是abstract或是空方法(钩子)

                设计模式的关键是封装修改,模版模式利用 继承 和 子类重写方法 来实现将一个功能中不变和可变的代码分隔开来,可变的部分 子类通过重写来实现修改。

  

架构图

 android 从顶层到底层 学习笔记--- framework架构_第4张图片

整个过程是 application 请求 SystemService 

   SystemService 返回application结果 

          

2.camera的架构

android 从顶层到底层 学习笔记--- framework架构_第5张图片

1.camera 打开摄像头: application 访问 CameraService CameraService与HAL 交互,打开摄像头,并创建CameraClient对象

2.照相: application 访问CameraService,完成照相,CameraService 访问 application 返回数据

涉及到了JNI 


3.binder 架构

android 从顶层到底层 学习笔记--- framework架构_第6张图片


Binder 建立application framework 与 System Service通信的流程

1.获取ServiceManger

2.通过ServiceManger获取到XXXService,如CameraService

3.与XXXService通信

client,xxxservice端都是通过持有的进程对象ProcessState创建线程,每个线程负责一条binder的通信通道,

双方都有相同的接口 IXXXService  类似网络分层,client,server同层之间拥有相同的协议

client请求service 是通过持有的service方的XXXService的代理BpXXXService,对其请求,请求通过Binder driver 传递给BnXXXService,BnXXXService把请求交给XXXService

XXXService对client的请求作出响应,响应通过持有的client方的BnXXX的代理BpXXX,在通过与Binder driver通信,Binder driver 将响应传递给client方的BnXXX,BnXXX向上传递,最终完成client/service 的请求响应。类似http请求响应的流程。



你可能感兴趣的:(android)