您的位置:首页 > 新闻 > 热点要闻 > [Android] Binder 里的 Service 和 Interface 分别是什么

[Android] Binder 里的 Service 和 Interface 分别是什么

2024/7/4 6:26:59 来源:https://blog.csdn.net/ykun089/article/details/139688665  浏览:    关键词:[Android] Binder 里的 Service 和 Interface 分别是什么

前言:

在使用 Binder 的时候,会使用到两个常量字符串,一个是 ServiceName ,一个是 InterfaceName,他们格式如下:

  constexpr char kDefaultServiceName[] = "my.remoteXXXservice";

  constexpr char kDefaultInterfaceName[] = "my.remoteXXXservice@1.0";

ServiceName通常不携带 @1.0 这种类似于版本号的东西,InterfaceName会携带。

ServiceName:

ServiceName是用来标识某个服务的,服务的注册/获取是通过IServiceManager来完成的

获取

  sp<IServiceManager> sm = defaultServiceManager();

  sp<IBinder> binder = sm->getService(String16(kDefaultServiceName));

注册

    defaultServiceManager()->addService(

            String16("media.player"), new MediaPlayerService());

InferfaceName:

InterfaceName是用来标识一组接口的,所谓的一组接口就是Bp和Bn里对应的那一组业务enum,一个Service里可以注册N个interface,每个interface还可以有N个版本。

发送

binder->transact(kTxCreateVirtualAudioTrack, data, &reply);

接收

onTransaction(...){

kTxXXX:

   ...

}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com