无分类 Android-Binder-分析 开博先写了Binder相关的分析,没有别的原因,主要是最近在整理Binder相关的资料。Binder涉及的内容很多,许多地方我也不是很清楚。还有许多方面是在写文档时感觉很明白了,过几天又会变得模糊。写文档时,我试图从简单的角度进行分析,但文章完成后发现还是不够简单明了,只能尽力写到这种程度了。网络上分析Binder的文…
无分类 Binder驱动之传输事件 Binder传输时通过Binder线程为主体进行交互的,所以Binder线程中会保存Binder传输事件,在binder_thread中使用transaction_stack做为一种栈的形式来记录所有的传输事件。transaction_stack保存着当前正在进行的传输事件,采取压栈的方式保存,所以栈顶为最新的传输,栈底为最早的传输。这种方式也表现了线程中传输事件的…
无分类 Binder驱动之debug信息与数据结构 在进行Binder debug或分析问题时,通常需要看一下当前的Binder状态信息。Kernel通过SYS系统提供了一些文件节点供我们读取,它们位于/sys/kernel/debug/binder/,分别为:
java Binder之AIDL 网上讲解Aidl的文章很多,都比较详细,这里就不再重复了。本人更偏重与Framework和Native,对APP没有发言权,文章中可能出现错误,请理解。这篇侧重于一下表面看不到的实现,碎片化的做些分析。
java Binder之bindService 其中,getServiceDispatcher()返回一个IServiceConnection对象,它为一个Binder实体,将负责与ServiceConnection通信。
无分类 Binder驱动之死亡通知 在Binder通信建立后,Client端可能需要知道Server端的存活状态。当Server端挂掉时,Client端需要清理与通信相关的数据和行为,这个清理过程就是通过Binder死亡通知机制实现的。
无分类 Binder之Service-Manager Service Manager是整个Binder机制的守护进程,用来管理开发者创建的各种Server,并且向Client提供查询Server远程接口的功能。Service Manager在init.rc中作为service启动,运行在一个独立的进程中。而Client和Server也运行在独立的进程中。这样,如果Client和Server需要和Service Manager进行通信,就需要使用进程中通信…
无分类 Binder驱动之最简单的通信 在Android系统中可以所是无处不Binder,Binder传输在每时每刻都发生着。很多情况下,一个进程中都不会只存在一个独立的Binder传输,经常是并发多个Binder传输,而且会存在Binder嵌套。尤其像system_server这种重要的进程Binder传输会更多。在系统发生问题时,如果追踪到system_server,会发现大部分情况都是在Binder传输…