Android Binder——C++层获取服务(十三)

embedded/2024/10/18 10:17:30/

        前面几篇文章介绍了 C++ 层服务的注册流程,首先通过 defaultServiceManager() 得到的 BpInterface 与 servciemanager 进行通信,最后通过 addServcie() 注册服务。这里我们来看一下获取服务的流程。

一、获取服务

        这个接口有两种方式,一个是通过 defaultServiceManager() 获取到 servicemanager 的 BpBinder,然后再通过该代理的 getService() 进行调用。另一个是 IServiceManager.h 中直接提供了全局的接口函数。我们分别来看一下,先看一下比较简单的全局接口函数获取方式。

1、全局接口

源码位置:frameworks/native/libs/binder/include/binder/IServiceManager.h

template<typename INTERFACE>
status_t getService(const String16& name, sp<INTERFACE>* outService)
{const sp<IServiceManager> sm = defaultServiceManager();if (sm != nullptr) {*outService = interface_cast<INTERFACE>(sm->getService(name));if ((*outService) != nullptr) return NO_ERROR;}return NAME_NOT_FOUND;
}

        这里封装了 defaultServiceManager(),然后再调用 getService()。其实还是需要先


http://www.ppmy.cn/embedded/8997.html

相关文章

golang接口

go里面的接口比较灵活&#xff0c;即接口没有直接归属权&#xff0c;不像java中使用interface直接将接口归属到某个类或者间接实现某一个接口&#xff0c;在go里面没有可以说明这个结构体实现了哪一个接口&#xff0c;它的能力就是对结构体添加成员方法&#xff0c;如果结构体中…

OpenHarmony实战开发-如何使用AKI轻松实现跨语言调用。

介绍 针对JS与C/C跨语言访问场景&#xff0c;NAPI使用比较繁琐。而AKI提供了极简语法糖使用方式&#xff0c;一行代码完成JS与C/C的无障碍跨语言互调&#xff0c;使用方便。本示例将介绍使用AKI编写C跨线程调用JS函数场景。通过调用C全局函数&#xff0c;创建子线程来调用JS函…

如何使用cuda进行图像矫正

普通矫正 相机矫正我们经常会用到&#xff0c;如果没有gpu加速&#xff0c;实际上矫正会很吃力&#xff0c;我们先用普通的矫正 cv::Mat undistort(cv::Mat img, cv::Mat K, cv::Mat D, int w, int h, float scale 0.6){cv::Mat Knew K.clone();//Knew K.copy()if (scale !…

数据结构-上三角矩阵存储方式[0知识掌握]

目标&#xff1a;看完本文章你将会了解上三角矩阵的存储方式以及矩阵中数据的位置索引号如何求 难点&#xff1a;上三角矩阵的公式推导&#xff0c;上三角任意位置对应的存储位置。 一、准备知识 1.求和公式 前n项和&#xff1a;Sn n(a1an)/2 公差&#xff1a;d后项-前项…

web server apache tomcat11-08-JNDI Resources

前言 整理这个官方翻译的系列&#xff0c;原因是网上大部分的 tomcat 版本比较旧&#xff0c;此版本为 v11 最新的版本。 开源项目 从零手写实现 tomcat minicat 别称【嗅虎】心有猛虎&#xff0c;轻嗅蔷薇。 系列文章 web server apache tomcat11-01-官方文档入门介绍 web…

君正主控应用案例:办公必备神器,长城黑白激光一体机

伴随着这些年素质教育水平的提高&#xff0c;学校老师们成功减负&#xff0c;家长身上的担子越来越重&#xff0c;同时移动互联网的发展&#xff0c;学校和家长的沟通方式也在发生着变化&#xff0c;现在很多老师喜欢给学生布置作业是电子版的形式&#xff0c;如果是试卷一类还…

37. UE5 RPG创建自定义的Ability Task

在前面的文章中&#xff0c;我们实现了一个火球术的一些基本功能&#xff0c;火球术技能的释放&#xff0c;在技能释放后&#xff0c;播放释放动画&#xff0c;在动画播放到需要释放火球术的位置时&#xff0c;将触发动画通知&#xff0c;在动画通知中触发标签事件&#xff0c;…

UE5下载与安装

官方网站&#xff1a;https://www.unrealengine.com/zh-CN 1、下载启动程序安装包。 登录官网后&#xff0c;点击首页右侧下载按钮下载Epic Games启动程序的安装包&#xff0c;如下图&#xff1a; 2、安装启动程序。 双击步骤1所下载安装软件&#xff0c;如下图&#xff1a;…