WEB开发网
开发学院手机开发Android 开发 Android深入浅出之Binder机制 阅读

Android深入浅出之Binder机制

 2012-06-30 10:47:32 来源:WEB开发网   
核心提示:一个纯虚类};有了DECLARE,那我们在某个CPP中IMPLEMNT它吧,Android深入浅出之Binder机制(15),那就在IXXX.cpp中吧,IMPLEMENT_META_INTERFACE(XXX,"android.xxx.IXXX");//IMPLEMENT宏status_t BnX
一个纯虚类
};
有了DECLARE,那我们在某个CPP中IMPLEMNT它吧。那就在IXXX.cpp中吧。
IMPLEMENT_META_INTERFACE(XXX,"android.xxx.IXXX");//IMPLEMENT宏

status_t BnXXX::onTransact(
uint32_t code, const Parcel& data,Parcel* reply, uint32_t flags)
{
switch(code) {
case GET_XXX: {
CHECK_INTERFACE(IXXX, data, reply);
读请求参数
调用虚函数getXXX()
return NO_ERROR;
} break; //SET_XXX类似
BpXXX也在这里实现吧。
class BpXXX: publicBpInterface<IXXX>
{
public:
BpXXX(const sp<IBinder>& impl)
: BpInterface< IXXX >(impl)
{
}
vituralgetXXX()
{
Parcel data, reply;
data.writeInterfaceToken(IXXX::getInterfaceDescriptor());
data.writeInt32(pid);
remote()->transact(GET_XXX, data,&reply);
return;
}
//setXXX类似
至此,Binder就算分析完了,大家看完后,应该能做到以下几点:
l 如果需要写自己的Service的话,总得知道系统是怎么个调用你的函数,恩。对。有2个线程在那不停得从binder设备中收取命令,然后调用你的函数呢。恩,这是个多线程问题。
l 如果需要跟踪bug的话,得知道从Client端调用的函数,是怎么最终传到到远端的Service。这样,对于一些函数调用,Client端跟踪完了,我就知道转到Service去看对应函数调用了。反正是同步方式。也就是Client一个函数调用会一直等待到Service返回为止。

上一页  10 11 12 13 14 15 

Tags:Android 深入浅出 Binder

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接