android查漏补缺(8)Binder framework架构和调用方法

1.Binder简介

        Binder是android系统中实现进程间通信的主要组件,包括各种AMS,PMS,SMS等服务和APK的通信都是通过binder实现。但是调用过PMS的同学肯定会有疑问,既然是进程通信,怎么没有消息的发送和接收,为什么调用不同进程的服务的接口能像调用相同进程的接口一样呢?要解答这个疑问就得弄清楚framework层对binder机制的封装的作用。

 2,Binder基本框架       

        Binder主要分为驱动层和框架层,驱动层通过创建/dev/binder设备文件实现和应用层进行通信,框架层封装了驱动层通信的细节,对外提供IInterface,BnInterface,BpInterface,IServiceManager,ProcessState,IPCThreadState这几个类对象,如果要扩展Android管理服务则需要对这几个对象进行操作。

IInterface:作为自定义服务接口的父类,本身作用不大

BnInterface:作为实现接口的Service的父类,主要需要实现其中的onTransact接口

BpInterface:作为实现接口的client的父类,主要实现接口中信息传递给service的方式

IServiceManager:作为管理服务的框架管理类,提供defaultServiceManager,addservice,getservice等接口

ProcessState:作为线程状态类提供唯一的binder操作对象。

IPCThreadState:作为binder驱动操作类提供和驱动直接操作的接口

3,helloworld参考代码

 参考github:https://github.com/weidongshan/APP_0004_Binder_CPP_App

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/111193.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

出海数字化,国产CRM如何支撑?纷享销客这样思考

2023年,疫情阴霾逐渐消散,企业全球化扩张的齿轮重新加速。以科技企业、高端制造业为代表的优秀企业引领中国企业出海浪潮,外资企业在华的经营活跃度也在提升。 无论是”外资在华经营“还是”中资出海“,这些具备全球化理想的企业…

宝塔安装mongodb插件失败的解决办法

安装时始终不成功。 进入控制台进行安装 /www/server/php/71# pecl install mongodb WARNING: channel "pecl.php.net" has updated its protocols, use "pecl channel-update pecl.php.net" to update pecl/mongodb requires PHP (version > 7.2.0, …

Dataworks API:调取 MC 项目下所有表单

文章目录 前言Dataworks API 文档解读GetMetaDBTableList 接口文档 API 调试在线调试本地调试运行环境账密问题请求数据进一步处理 小结 前言 最近,我需要对公司的数据资产进行梳理,这其中便包括了Dataworks各个项目下的表单。这些表单,作为…

Android 处理多个TextView, 文案过长时前面文本省略的问题

遇到显示多个TextView,文案过短时,这几个TextView跟随显示,文案过程时,前面TextView省略,后个的TextView全显示。效果如下: 用ConstraintLayout 没有得到解决,采用 RelativeLayout 解决 代码如…

按相同时间切割长视频

需求 将一段1小时的.mkv视频,按每5分钟切割,并转成.mp4 工具 格式工程 x64 5.15,下载 这真是个好工具,考虑过PR,无意间发现这软件很强大 实现步骤 第一步:选择视频,导出MP4,添…

libcurl库的网页爬虫程序

示例代码&#xff1a; #include <curl/curl.h> #include <iostream> ​ int main() {CURL *curl;CURLcode res; ​curl_global_init(CURL_GLOBAL_DEFAULT); ​curl curl_easy_init();if(curl) {curl_easy_setopt(curl, CURLOPT_URL, "/");curl_easy_se…

CSS与基本选择器

<div class"c1" id"d1"></div> CSS基本知识 什么是css&#xff1a;CSS&#xff08;Cascading Style Sheet&#xff0c;层叠样式表)定义如何显示HTML元素。 当浏览器读到一个样式表&#xff0c;他就会按照这个样式l来进行渲染。其实就是让HT…

雷迪管线探测仪故障定位仪维修RD8100

英国雷迪管线探测仪常见维修型号&#xff1a;RD4000&#xff1b;RD7000&#xff1b;RD8000&#xff1b;RD8100等。 应该范围&#xff1a;是目前探测煤气、电力、自来水、排水等各类地下管线的仪器之一。 雷迪管线探测仪具有直连线特点&#xff1a;用直连线可以将发射机直接与需…

基于Canal同步MySQL数据到Elasticsearch

基于Canal同步MySQL数据到Elasticsearch 基于 canal 同步 mysql 的数据到 elasticsearch 中。 1、canal-server 相关软件的安装请参考&#xff1a;《Canal实现数据同步》 1.1 pom依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmln…

Android图形系统之HWComposer、ComposerHal、ComposerImpl、Composer、Hwc2::Composer实例总结(十四)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药. 更多原创,欢迎关注:Android…

利用远程IO模块,轻松驾驭食品包装生产的自动化

常见的自动化包装系统&#xff0c;它的核心部分通常由一系列高端设备组成&#xff0c;包括自动开箱机、自动封箱机、自动捆扎机、装箱机器人、码垛机器人等。这些设备协同工作&#xff0c;形成一条高效运转的生产线&#xff0c;从开箱到装箱&#xff0c;再到码垛&#xff0c;每…

多测师肖sir_高级金牌讲师_性能测试之badboy录制脚本02

性能测试之badboy录制脚本 一、下载安装包&#xff0c;点击安装 二、点击我同意 三、选择路径&#xff0c;点击install 打开以下界面&#xff0c;表示安装成功 第二步&#xff1a;录制流程 界面视图&#xff0c;模拟浏览器&#xff0c;能够进行操作 需要录制脚本的URL 点…

MLF - 麻辣粉

MLF全称中期借贷便利&#xff08;Medium-term lending Facility&#xff09;,理解为央行向商业银行、政策银行发放的贷款&#xff0c;但需要符合一定要求才可向央行申请。银行通过MLF向央行借款的时候&#xff0c;需要提供担保品。一般为国债、央行票据、政策性金融债、地方债、…

C++设计模式_19_Memento 备忘录(理解,目前多使用序列化方案来实现)

Memento 备忘录模式也属于“状态变化”模式&#xff0c;它是一个小模式&#xff0c;在今天来看有些过时&#xff0c;当今已经很少使用当前模式实现需求&#xff0c;思想却不变&#xff08;信息隐藏&#xff09;&#xff0c;目前多使用序列化方案来实现。本系列所介绍的模式&…

企业金蝶KIS软件服务器中了locked勒索病毒怎么办,勒索病毒解密

最近一段时间&#xff0c;网络上的locked勒索病毒又开始了新一波的攻击&#xff0c;给企业的正常生产生活带来了严重影响。经过最近一段时间云天数据恢复中心对locked勒索病毒的解密&#xff0c;为大家整理了以下有关locked勒索病毒的相关信息。近期locked勒索病毒主要攻击金蝶…

【httpd】 Apache http服务器目录显示不全解决

文章目录 1. 文件名过长问题1.1 在centos中文件所谓位置etc/httpd/conf.d/httpd-autoindex.conf1.2 在配置文件httpd-autoindex.conf中的修改&#xff1a;1.3 修改完成后重启Apache&#xff1a; 1. 文件名过长问题 1.1 在centos中文件所谓位置etc/httpd/conf.d/httpd-autoindex…

解决SQLServer占用80端口问题

在安装好了SQLServer之后&#xff0c;发现系统默认80端口被占用&#xff0c;导致很多默认用80端口的软件运行不起来。 解决办法 1、运行(快捷键:WINR) services.msc 2、找到SQL Server Reporting Services (MSSQLSERVER) 服务 3、先停止服务&#xff0c;然后再禁用服务

浅谈Redis的五大数据类型及其应用

前言 Redis是一种开源的内存数据结构存储系统,它支持多种数据类型,包括字符串String、列表list、集合、哈希表和有序集合。这些数据类型在Redis中有着广泛的应用场景,可以满足不同的业务需求。本文将介绍Redis的五大数据类型及其应用。 一、string数据类型 常用命令: …

C 语言选择练习题(一): C语言基础

本文主要考察知识点范围为&#xff1a; C语言系统化精讲&#xff08;一&#xff09;&#xff1a;编程基础&#xff1a;https://blog.csdn.net/xw1680/article/details/134001443 C语言系统化精讲&#xff08;二&#xff09;&#xff1a;C语言初探&#xff1a;https://blog.csdn…

如何隐藏woocommerce 后台header,woocommerce-layout__header

如何隐藏woocommerce 后台header&#xff0c;woocommerce-layout__header WooCommerce |Products Store Activity| Inbox| Orders| Stock| Reviews| Notices| breadcrumbs 在 functions.php 里添加如下代码即可&#xff1a; // Disable WooCommerce Header in WordPress Admi…