在android中启动sensor的代码是:SensorService::instantiate();
在instantiate()中的代码如下:
sp<IServiceManager> sm(defaultServiceManager());
return sm->addService(String16(SERVICE::getServiceName()), new SensorService());addService()函数的定义是:status_t addService( const String16& name,const sp<IBinder>& service)= 0;
请问:new SensorService()返回的指针问什么能传递给sp<IBinder>& service?另外,在调用addService的时候是怎么调用到SensorService::onFirstRef()这个函数的?谢谢!
在instantiate()中的代码如下:
sp<IServiceManager> sm(defaultServiceManager());
return sm->addService(String16(SERVICE::getServiceName()), new SensorService());addService()函数的定义是:status_t addService( const String16& name,const sp<IBinder>& service)= 0;
请问:new SensorService()返回的指针问什么能传递给sp<IBinder>& service?另外,在调用addService的时候是怎么调用到SensorService::onFirstRef()这个函数的?谢谢!
解决方案 »
- 状态栏显示位置
- 不用的资源比如String等会不会影响性能?至少会占用内存吧
- 为什么总是 Failed to install XXX.apk on device 'emulator-5556! ?
- android sdk安装错误
- Android Bluetooth porting
- 如何在一个视图的表面的左上角添加一个小的视图
- 求推荐 android 服务器端开发书籍
- ActionBar的theme
- ViewGroup如何重写onMeasure
- html5等打包成的.apk文件遇到在华为, 中兴手机上卡顿, 兼容性问题, 求大神帮忙!
- android电子书籍是怎么做的。也是APK
- android新手求帮助
|
ISensorServer BBinder
\ /
BnSensorServer
|
SensorService
new SensorService()返回的指针问什么能传递给sp<IBinder>& service ?
因为它是从IBinder继承下来的,见上图继承大概关系怎么调用到SensorService::onFirstRef()这个函数的?
因为你给sp<IBinder>& 赋值时,sp是个模块,它里面可以实现onFirstRef()
调用
sp是一个模板类,它里面实现了onFirstRef()具体过程看一下sp的模板实现过程即可,很容易的
里面没有关于onFirstRef()的实现啊