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

Android深入浅出之Binder机制

 2012-06-30 10:47:32 来源:WEB开发网   
核心提示:::IBinder>& obj); \virtual const android::String16&getInterfaceDescriptor() const; \I##INTERFACE();
::IBinder>& obj); \
virtual const android::String16&getInterfaceDescriptor() const; \
I##INTERFACE(); \
virtual ~I##INTERFACE();
我们把它兑现到IServiceManager就是:
static constandroid::String16 descriptor; -->喔,增加一个描述字符串
staticandroid::sp< IServiceManager > asInterface(constandroid::sp<android::IBinder>&
obj) ---》增加一个asInterface函数
virtual constandroid::String16& getInterfaceDescriptor() const; ---》增加一个get函数
估计其返回值就是descriptor这个字符串
IServiceManager(); \
virtual ~IServiceManager();增加构造和虚析购函数...
那IMPLEMENT宏在哪定义的呢?
见IServiceManager.cpp。位于framework/base/libs/binder/IServiceManager.cpp
IMPLEMENT_META_INTERFACE(ServiceManager,"android.os.IServiceManager");
下面是这个宏的定义
#defineIMPLEMENT_META_INTERFACE(INTERFACE, NAME) \
const android::String16I##INTERFACE::descriptor(NAME); \
const android::String16& \
I##INTERFACE::getInterfaceDescriptor() const { \
return I##INTERFACE::descriptor; \
} \
android::sp<I##INTERFACE>I##INTERFACE::asInterface( \
constandroid::sp<android::IBinder>& obj) \
{ \
android::sp<I##INTERFACE>intr; \
if (obj != NULL) { \
intr =static_cast<I##INTERFACE*>( \
obj->queryLocalInterface( \
I##INTERFACE::descriptor).get()); \
if (intr == NULL) { \
intr = newBp##INTERFACE(obj); \
} \
} \
return intr; \
} \

上一页  1 2 3 4 5 6 7 8 9 10  下一页

Tags:Android 深入浅出 Binder

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