Android Binder Mechanism (1)

本文通过一个具体的例子介绍Android Binder机制,涉及系统服务ExampleService的创建、注册和服务调用过程。客户端通过代理对象与服务端通信,实现了进程间通信。文章以这个例子为起点,后续将深入探讨Binder的更多细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    Binder是Android系统中实现进程间通信的核心机制,其本质是一种Proxy模式的具体实现,就像COM,CORBA一样。

 

    Proxy模式的基本思想是客户端程序通过某种方式得到服务器端的代理对象,所有对服务器端的服务请求都发送给该代理对象,该代理对象负责同服务器端进行通信。从客户端的角度看,访问代理对象就如同访问其它本地对象一样;服务器代理对象则屏蔽了所有的进程间通信细节。

 

    本文计划给出一个具体的例子,然后以这个例子为基础,深入剖析一下Android系统的绑定机制。

 

    实例:新增加一个系统服务ExampleService,该服务可以接受一个整形参数,将其值加上100并返回。客户端应用程序使用此服务计算1+100的值。

 

    代码1: 系统服务ExampleService的具体实现

 

 

 

    在/framework/android/src/frameworks/base下面新建一个文件夹ExampleService,将以上三个文件复制到该文件夹中。

 

    代码2:启动ExampleService的应用程序

 

 

    在/framework/android/src/frameworks/base下面新建一个文件夹ExampleServer,将以上两个文件复制到该文件夹中。

 

    代码3:使用ExampleService的客户端应用程序

 

 

 

    在/framework/android/src/frameworks/base下面新建一个文件夹Example,将以上三个文件复制到该文件夹中。

 

    Build整个Android系统,这里一共会在系统中生成三个文件,分别是

    /system/lib/libExample.so

    /system/bin/ExampleServer

    /system/bin/Example

 

    然后启动我们新添加的ExampleService系统服务,并启动客户端程序验证运行结果。

    $> adb shell

    # cd /system/bin

    # ./ExampleServer &

    # ./Example

    answer=101

 

    在接下来的几篇文章中,我们会以这个例子为基础,深入分析一下Android系统中Binder机制的各个部分。

 

 

    参考文献:

    1. 云中漫步博客:http://my.unix-center.net/~Simon_fu/

    2. 如何撰写自己的第一个核心服务--高焕堂:http://www.android1.net/Topic.aspx?BoardID=21&TopicID=990

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值