android Binder机制
文章平均质量分 90
kc专栏
深入探索android Framework层代码,博客持续更新中!!!
展开
-
Binder通信过程中的用户空间线程池的管理
在Binder通信机制里,客户端与服务端之间的通信是在专门的IPC通信线程中进行的。这些线程构成一个线程池。线程的创建和销毁是在用户空间进行的,而对线程的控制是在驱动层进行的,即驱动控制线程池中线程的生命,而线程本身则是运行在用户空间的。驱动层是通过BR_SPAWN_LOOPER向用户空间发送创建新线程的命令。线程池的大小可以设置, 如果没有主动去设置这个大小,则默认大小为15,如下代原创 2016-06-23 16:19:10 · 3084 阅读 · 0 评论 -
简介android Binder
在Android系统中,每一个应用程序都是由一些Activity和Service组成的,这些Activity和Service有可能运行在同一个进程中,也有可能运行在不同的进程中。那么,不在同一个进程的Activity或者Service是如何通信的呢?这就是本文中要介绍的Binder进程间通信机制了。 我们知道,Android系统是基于Linux内核的,而Linux内核继转载 2016-06-23 14:16:31 · 702 阅读 · 0 评论 -
浅谈Android系统进程间通信(IPC)机制Binder中的Server和Client获得Service Manager接口之路
在前面一篇文章浅谈Service Manager成为Android进程间通信(IPC)机制Binder守护进程之路中,介绍了Service Manager是如何成为Binder机制的守护进程的。既然作为守护进程,Service Manager的职责当然就是为Server和Client服务了。那么,Server和Client如何获得Service Manager接口,进而享受它提供转载 2016-06-23 14:21:15 · 596 阅读 · 0 评论 -
Android系统进程间通信(IPC)机制Binder中的Server启动过程源代码分析
在前面一篇文章浅谈Android系统进程间通信(IPC)机制Binder中的Server和Client获得Service Manager接口之路中,介绍了在Android系统中Binder进程间通信机制中的Server角色是如何获得Service Manager远程接口的,即defaultServiceManager函数的实现。Server获得了Service Manager远程接转载 2016-06-23 14:49:34 · 1327 阅读 · 0 评论 -
Android系统进程间通信(IPC)机制Binder中的Client获得Server远程接口过程源代码分析
在上一篇文章中,我们分析了Android系统进程间通信机制Binder中的Server在启动过程使用Service Manager的addService接口把自己添加到Service Manager守护过程中接受管理。在这一篇文章中,我们将深入到Binder驱动程序源代码去分析Client是如何通过Service Manager的getService接口中来获得Server远程接口的转载 2016-06-23 14:55:28 · 1117 阅读 · 0 评论 -
Android Binder ProcessState & IPCThreadState相关介绍
之前几篇博客我们介绍了传统Binder的使用方法,包括c层和java层,这篇博客我们主要介绍下ProcessState和IPCThreadState类的相关方法。一、正常demon binder调用流程在一个传统的demon中,如果我们要使用Binder通信,代码大致如下:int main(int argc, char** argv) { sp proc(P原创 2016-06-23 17:29:14 · 3491 阅读 · 0 评论 -
Binder java层实现原理
android使用java实现的,因此binder很多是在java中使用。此篇博客是在罗老师那边博客上节选一段,然后自己分析了下。下面是自己写的一个aidl文件package android.os;interface IHelloService{ void setVal(int val); int getVal();} 注意,这是一个aidl文件,编译后会生成原创 2015-05-22 18:53:24 · 1572 阅读 · 0 评论 -
Binder c++代码
这篇博客主要看一下binder的一些实现,以及自己写一个实例:Binder中service组件和client组件分别使用模板类BnInterface和BpInterface来描述,前者为Binder的本地对象,后者为代理对象。// ----------------------------------------------------------------------templat原创 2015-05-22 16:54:24 · 1853 阅读 · 0 评论