尊天命,尽人事
分类: C/C++
2012-10-29 11:40:24
研究了android binder 有两天了,感觉这是一个简单易用的东西,也许以后在非android的应用环境中也可以使用这种IPC方案,所以把一些学习记录下来,以将来备用.
今天主要是实现了一个简单的c++ service服务程序,客户端通过binder呼叫服务上的,已经注册的接口函数。并在客户端实现了一个callback接口。
关于callback的接口这个例子只是一个简单的实现。估计以后实际使用中还有变数。
关于callback接口的一些想法
a. 现有测试程序中的client端并没有启动 IPCThreadState的joinThreadPool 函数
b. 现有测试程序中的client端并没有启动 ProcessState 的startThreadPool 函数
c. 现有测试程序中的client端的callback触发,是通过client主动调用service端的一个函数.在这个函数内回调,之前注册的callback接口中的函数,实现的。
d. 现在这种模式的测试通过,说明了service和client是可以双向沟通的
e. 将来的实现模式中,如果service端在需要时主动callback回来,估计client 端就需要启动
startThreadPool 函数了,至于 joinThreadPool 我目前的看法是没必要启动的。因为只要有了threadpool 客户端就可以实现服务了,当然,client端可不能随便退出来,至少退出来前要通知service端,自己已经退出,要不service端回调回来可就找不到北了.
以下贴出代码,以备后用:
一. 编写一个公用的动态库 libITestBinderInterface01
这个动态库为service端和client端共用。
1.Android.mk
点击(此处)折叠或打开
好了。动态库libITestBinderInterface01 实现好了,mm一下就行了。
接下来实现一个测试用的service和client。Android.mk如下。把两个程序的编译写在一起方便些
点击(此处)折叠或打开
点击(此处)折叠或打开