Andorid Binder进程间通信---总结

一、Server和Service Manager进程间通信

        Service Manager进程启动时,已经创建了Service Manager实体对象,没有Service Manager本地对象。

        Server首先获取了Server代理对象,句柄值为0。没有Server引用对象。

        Server----->Service Manager

        Server找到目标进程:依据Server代理对象的句柄值0,找到Service Manager实体对象,然后找到Service Manger进程,也就是目标进程。

        Server传递的数据:包括flat_binder_object结构体,当中handle为Service Manager的引用对象的句柄值,Service Manager的引用对象引用了Server的实体对象,Server的实体对象又引用了Server的本地对象。(binder_transaction函数case BINDER_TYPE_BINDER)。

        Service Manager处理数据:svcinfo结构体ptr为Servicer Manager的引用对象句柄值,name为传递进来的字符串。

        Service Manager----->Server

        Service Manager找到目标进程:依据thread->transaction_stack->from找到目标进程,即Server进程。

        Service Manager传递的数据:返回正确值0。

        Server处理数据:Server循环等待。


二、Client和Service Manager进程间通信

        Service Manager进程启动时,已经创建了Service Manager实体对象,没有Service Manager的本地对象。

        Client首先获取了Client代理对象,句柄值为0。没有Client引用对象。

        Client----->Service Manager

        Client找到目标进程:依据Client进程代理对象的句柄值0,找到Service Manager实体对象,然后找到Service Manger进程,也就是目标进程。

        Client传递的数据:svcinfo 结构体name那个字符串。

        Service Manager处理数据:获得binder_object结构体,当中pointer指向了Service Manager的引用对象(引用了Server的实体对象)的句柄值。

        Service Manager----->Client

        Service Manager找到目标进程:依据thread->transaction_stack->from找到目标进程,即Client进程。

        Service Manager传递的数据:传递的内容flat_binder_object结构体,handle为Client的引用对象(引用了Server的实体对象)的句柄值。(binder_transaction函数case BINDER_TYPE_HANDLE)。

        Client处理数据:返回Client代理对象(句柄值是上面Client引用对象的句柄值)。


三、Client和Server进程间通信

       眼下已经获取了Client代理对象,Client引用对象,Server实体对象,Server本地对象。

       Client----->Server

       Client找到目标进程:依据Client代理对象的句柄值,首先找到Client引用对象,通过Client引用对象再找到Server的实体对象,通过Server实体对象,找到Server进程,也就是目标进程。

       Client传递的数据:一个用于匹配的描写叙述符。和比如GET_VALUE命令。

       Server处理数据:依据找到的Server实体对象,找到Server本地对象,利用Server本地对象来运行GET_VALUE命令获取值

       Server----->Client

       Server找到目标进程:依据thread->transaction_stack->from找到目标进程,即Client进程。

       Server传递的数据:传递的数据返回值是getVal获取的值(利用Server本地对象来运行GET_VALUE命令获取值)。

       Client处理数据:把上面返回的结果读取出来。

转载于:https://www.cnblogs.com/bhlsheji/p/4280362.html

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

POJ 2135 最小费用最大流

思路&#xff1a; 源->1连费用0 流量2 其它的边 费用w 流量1 n->汇 费用0 流量2 最小费用流 搞定~ //By SiriusRen #include <queue> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; #define N 2010 #def…

06-广度优先搜索:图、队列

数据结构和算法 基于《算法图解》—Aditya Bhargava 和《数据结构》—严蔚敏 第6章广度优先搜索 6.1 简介 广度优先搜索—breadth-first search&#xff0c;BFS. 主要内容图和队列。 广度优先搜索能让你能够找出两样东西之间的最短距离&#xff0c;比如&#xff1a;编写国际跳…

[转]Displaying standard DataTables in MVC

本文转自&#xff1a;http://stackoverflow.com/questions/2243898/displaying-standard-datatables-in-mvc Controller action:public ActionResult Index() {ViewData["Message"] "Welcome to ASP.NET MVC!";DataTable dt new DataTable("MyTable…

linux c之解决使用socket函数返回为0的问题

1、问题&#xff1a; 在 linux 平台下 写socket&#xff0c;实现简单的tcp通信&#xff0c;服务端第一次调用 socket函数返回 0 2、找原因&#xff1a; 我的代码是这样写的 if ((server_sockfd socket(AF_INET,SOCK_STREAM, 0) < 0)); 特么总是返回0&#xff0c;日了狗 自…

网站增加打赏功能

1、前提条件&#xff1a; 设置——博客设置——博客侧边栏公告&#xff08;支持HTML代码&#xff09;后面的如果是“申请开通”&#xff0c;必须先申请开通&#xff1b;如果是“支持js代码”&#xff0c;那就代表你已经开通过了&#xff0c;有写js代码的权限了 2、准备材料&…

虎年云原生落地技术趋势

今天是立春&#xff0c;虎年第一天。去年我写过一篇 牛年 dotnet云原生技术趋势[1]&#xff0c;今天再来写一篇虎年云原生落地技术趋势&#xff0c;去年局限在.NET 平台上的云原生落地&#xff0c;我今年在去年探索云原生落地的基础上从多语言云原生技术落地的趋势来谈谈。在 2…

WdatePicker 设置日期第一个比第二个的日期小

WdatePicker 设置日期第一个比第二个的日期小 可以设置&#xff0c;日期只显示某一天的&#xff0c;比如只显示周一&#xff0c;和周日 <input id"Text1" class"Wdate" onFocus"WdatePicker({disabledDays:[0,2,3,4,5,6],maxDate:#F{$dp.$D(\Text2…

excel中调用python程序_一篇文章带你使用Python搞定对Excel表的读写和处理

文章目录一、我的需求二、代码三、总结一、我的需求我想要excel 的最后1列由列表形式转换为数值类型​可以看到最后一列有的是列表&#xff0c;有的直接是数值&#xff0c;想要整个列表中的内容都转为数值类型二、代码import openpyxldef write_excel_xlsx():# 写入数据准备wor…

07-狄克斯特拉算法

数据结构和算法 基于《算法图解》—Aditya Bhargava 和《数据结构》—严蔚敏 第7章 狄克斯特拉算法 上一章的广度优先搜索&#xff0c;找出的是段数最少的路径&#xff1b; 本章狄克斯特拉算法&#xff0c;找出的是最快的路径。 7.1 使用狄克斯特拉算法 步骤&#xff1a; 第…

linux c之使用共享内存实现进程间通信

这篇博客有别人的也有自己改的,作为读书笔记,勿喷。 1、共享内存的介绍 共享内存就是允许两个不相关的进程访问同一个逻辑内存。共享内存是在两个正在运行的进程之间共享和传递数据的一种非常有效的方式。不同进程之间共享的内存通常安排为同一段物理内存。进程可以将同一段…

【转】你没有变强是因为你一直很舒服

这个世界上有两种人&#xff0c;一种人是强者&#xff0c;一种人是弱者。强者给自己找不适&#xff0c;弱者给自己找舒适。想要变得更强&#xff0c;就必须要学会强者的必备技能&#xff0c;那就是让不适变得舒适。 如果你学会了这种技能&#xff0c;你可以搞定很多事情&#x…

linux网络编程之套接字(套接口)、ip、端口理解

1、套接字、ip、端口介绍 1)、套接字 源IP地址和目的IP地址以及源端口号和目的端口号的组合称为套接字。其用于标识客户端请求的服务器和服务。 它是网络通信过程中端点的抽象表示,包含进行网络通信必需的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远…

聊聊mysql执行过程

在项目开发当中 &#xff0c;很多时候&#xff0c;我们的数据库应用优化都是从表层到里层的一个过程。比如一个查询写下来 &#xff0c;我们的优化方向大多时候都是先看方法执行的时间长短&#xff0c;然后再决定是否去优化它&#xff0c;下意识的第一步操作都是看是否命中索引…

01. Node js Hello world

2019独角兽企业重金招聘Python工程师标准>>> 01. Node js Hello world 环境安装 官网http://nodejs.org/ Node.js is a platform built on Chromes JavaScript runtime for easily building fast, scalable network applications. Node.js uses an event-driven, no…

异常检测之浅谈入侵检测

打开微信扫一扫&#xff0c;关注微信公众号【数据与算法联盟】 转载请注明出处&#xff1a;http://blog.csdn.net/gamer_gyt 博主微博&#xff1a;http://weibo.com/234654758 Github&#xff1a;https://github.com/thinkgamer前言 由于业务关系&#xff0c;最近一段时间一直在…

蓝宝石rx580gpuz参数_蓝宝石RX580 2048SP 4G D5 白金版 OC游戏测试

今年&#xff0c;显卡的价格可谓是一路飙升&#xff0c;老黄家新卡价格翻番&#xff0c;甜点级新卡迟迟未发&#xff0c;而市场上则鱼龙混杂&#xff0c;那么为什么不来看看这款蓝宝石 RX580 2048SP 4G 白金版 OC&#xff1f;蓝宝石 RX580 2048SP 4G 白金版 OC是近期推出的一款…

08-贪婪算法

数据结构和算法 基于《算法图解》—Aditya Bhargava 和《数据结构》—严蔚敏 第8章 贪婪算法 贪婪算法的优点&#xff1a; 简单易行&#xff0c;让每一步都选择局部最优解&#xff0c;最终得到的就是全局最优解。 贪婪算法是近似算法&#xff1a;在获得精确解需要的时间太长时…

企业知识库在跨地域团队协作中的价值

随着全球化进程的不断加速&#xff0c;越来越多的企业开始面临跨地域协作的挑战。在这种背景下&#xff0c;企业知识库作为一种重要的知识管理工具&#xff0c;对于提高团队协作效率、促进知识共享与创新具有不可替代的价值。接下来就说一下知识库在跨地域团队协作中的重要性及…

MySQL知识总结(二)基本语句总结

1. 数据库 查看数据库 show databases; 使用数据库 use [数据库名] 如&#xff1a;use mysql 创建数据库 CREATE DATABASE bruce DEFAULT CHARACTER SET utf8 删除数据库 drop database bruce 查询mysql版本 select version(); 查询当前用户 select user(); 显示当前库的所有表…

linux网络编程之地址结构sockaddr和sockaddr_in的区别

1、介绍sockaddr 结构体struct sockaddr在/usr/include/linux/socket.h中定义 struct sockaddr {unsigned short sa_family; // 2 bytes address family, AF_xxxchar sa_data[14]; // 14 bytes of protocol address }; 2、介绍sockaddr_in 结构体stru…