Android Binder.docx
《Android Binder.docx》由会员分享,可在线阅读,更多相关《Android Binder.docx(9页珍藏版)》请在冰豆网上搜索。
![Android Binder.docx](https://file1.bdocx.com/fileroot1/2023-1/27/2254e1d6-d893-48a3-bb9f-efe63389c275/2254e1d6-d893-48a3-bb9f-efe63389c2751.gif)
AndroidBinder
1.AndroidBinder介绍
(1)Binder基于Client-Server通信模式。
AndroidBinder框架定义了四个角色:
Server,Client,ServiceManager以及Binder驱动。
其中Server,Client,ServiceManager运行于用户空间,驱动运行于内核空间。
(2)AndroidBinder机制核心组件是Binder驱动程序,ServiceManager提供辅助管理功能,负责管理Server、向Client提供查询Server的功能。
(3)ServiceManager提供接口addService和getService。
2.ServiceManager
ServiceManager也是Client-Server通信模式。
Java层ServiceManager是客户端,Server端对应Service_manager.c,这个一个Linux守护进程,系统引导的时候会开启的服务。
(启动方式见init.rc中serviceservicemanager/system/bin/servicemanager)
3.ActivityManager
4.AndroidBinder框架
5.AIDL介绍
(1)AIDL(AndroidInterfaceDefinitionLanguage)是一种IDL语言,用于生成可以在Android设备上两个进程之间进行进程间通信(interprocesscommunication,IPC)的代码。
(2)AIDL接口文件,和普通的接口内容没有什么特别,只是它的扩展名为.aidl。
保存在src目录下。
如果其他应用程序需要IPC,则那些应用程序的src也要带有这个文件。
(3)何时使用AIDL:
允许客户端从不同的应用程序为了进程间的通信而去访问service,并且想在service处理多线程。
(4)如果不需要进行不同应用程序间的并发通信(IPC),youshouldcreateyourinterfacebyimplementingaBinder。
(5)想进行IPC,但不需要处理多线程的,则implementyourinterfaceusingaMessenger。
注:
参考网络上的文章整理,部分资料转自网络。