Binder和SurfaceFlinger以及SystemServer介绍-android学习之旅(79)
2015-10-23 10:31
435 查看
由于binder机制的存在,使得进程A可以访问进程B中的对象。
Android系统Binder机制中的四个组件Client、Server、Service Manager和Binder驱动程序:
1. Client、Server和Service Manager实现在用户空间中,Binder驱动程序实现在内核空间中
2. Binder驱动程序和Service Manager在Android平台中已经实现,开发者只需要在用户空间实现自己的Client和Server
3. Binder驱动程序提供设备文件/dev/binder与用户空间交互,Client、Server和Service Manager通过open和ioctl文件操作函数与Binder驱动程序进行通信
4. Client和Server之间的进程间通信通过Binder驱动程序间接实现
5. Service Manager是一个守护进程,用来管理Server,并向Client提供查询Server接口的能力
Binder在调用另一个进程的对象时,就像在自己的进程中一样
#
Binder实际上使用的共享内存的方式来进行通信,Binder作为一个中间这进行传递共享数据
Binder实际上使用的共享内存的方式来进行通信,Binder作为一个中间这进行传递共享数据
Native Service:系统初始化时建立
Android Service:系统二阶段初始化建立
systemserver介绍:
1.Zygote进程是Android Java世界的开创者,所有的Java应用程序进程都由Zygote进程创建。Zygote创建应用程序进程过程其实就是复制自身进程地址空间作为应用程序进程的地址空间。
#
2.Zygote进程是所有Android Java应用程序进程的父进程,是继承关系,应用程序进程继承Zygote进程的所有资源,Zygote进程在启动时加载所有应用程序进程运行所需的公共资源。普通应用程序在启动时,只需要加载自身特性资源就可以了。
surfaceFlinger介绍:
1.SurfaceFlinger服务运行在Android系统的System进程中,它负责管理Android系统的帧缓冲区(Frame Buffer)。每一个Android应用程序与SurfaceFlinger服务都有一个连接,这个连接都是通过一个类型为Client的Binder对象来描述的,来通知surfaceFlinger绘制自己的UI。 ##
2.Android应用程序在通知SurfaceFlinger服务来绘制自己的UI的时候,需要通过SharedClient将UI元数据传递给SurfaceFlinger服务,一个SharedClient对应一个Android应用程序,一个SharedClient至多包含SharedBufferStack(共享缓冲区堆栈),一个Shared-BufferStack对应一个surface。
相关文章推荐
- Android studio、idea中svn不停输入用户密码
- android launchmode singleinstance后台切换问题
- 【FastDev4Android框架开发】Android首页图片自动无限循环轮播Gallery+FlowIndicator(二)
- Android 的NumberPicker相关问题
- 使用aapt查看apk包名和启动的activity
- Android textview 显示不全的问题
- Android开发中无处不在的设计模式——原型模式
- Android官方提供的支持不同屏幕大小的全部方法
- Android开发总结笔记 四大组件之ContentPovider(下) 1-2-9
- 【Android应用开发】Android Studio 错误集锦 -- 将所有的 AS 错误集合到本文
- 【Android应用开发】Android Studio 错误集锦 -- 将所有的 AS 错误集合到本文
- android比较时间
- Android 线程池及多线程下载,Progressbar动态更新以及文件保存sd卡
- Android 线程池及多线程下载,Progressbar动态更新以及文件保存sd卡
- AndroidScreenSlide项目切换view动画效果《IT蓝豹》
- Android--Activity简介及生命周期
- AndroidVideoPlayer在线播放视频
- android 动画实现(一)Tween动画
- Android 三大图片缓存原理、特性对比
- Android API Level最新版本到6.0Platform Codenames, Versions, API Levels, and NDK Releases