android aidl进程间通信封装通用实现-用法说明

该aar包的使用还是比较方便的

一先看客户端

1 初始化

JsonProtocolManager.getInstance().init(mContext, "com.autoaidl.jsonprotocol");
//客户端监听事件实现
JsonProtocolManager.getInstance().setJsonProtocolReceive(new IJsonReceive() {@Overridepublic String received(String jsonParams, Bundle bundle) {LogUtils.d(TAG, "OnReceive --> jsonParams:" + jsonParams);return JsonSdkController.getInstance().onReceive(jsonParams);}
});

2 发送事件:

 就是通过json的形式将参数包裹进来,另一端统一解析

 唯一标志位:KEY_CLIENT_REQUEST_AUTHOR 是必须要加的,不然区分不出来是那个客户端

JSONObject jsonObject = new JSONObject();
jsonObject.put("protocolId", ProtocolID.PROTOCOL_SEARCH);
jsonObject.put("versionName", "v0.0.1");
JSONObject jsonData = new JSONObject();
jsonData.put("say","hello- which pid are you ?");
jsonObject.put("data", jsonData);
jsonObject.put(SDKConstants.KEY_CLIENT_REQUEST_AUTHOR, "yangtestt");
JsonProtocolManager.getInstance().request(jsonObject.toString(),null);

二再看服务端

1 初始化

JsonProtocolManager.getInstance().init(mContext, "com.autoaidl.jsonprotocol");

2 发送事件

JSONObject jsonObject = new JSONObject(); jsonObject.put("protocolId", ProtocolID.PROTOCOL_SEARCH); jsonObject.put("versionName", "v0.0.1"); JSONObject jsonData = new JSONObject(); jsonData.put("say","hello- which pid are you ?"); jsonObject.put("data", jsonData); //jsonObject.put(SDKConstants.KEY_CLIENT_REQUEST_AUTHOR, "yangtestt"); JsonProtocolManager.getInstance().request(jsonObject.toString(),null);

服务端和客户端相互发送比较类似,只是服务端不需要传唯一id值

也不需要监听回调

我项目里的demo更简单,直接将客户端和服务端的代码 放到一起公用了(代码虽然冗余,但能用),demo中的服务端和客户端唯一的区别就是gradle里面动态改了包名。

实际项目中可以直接将lib库编译成aar包集成进去,然后客户但android 11的版本需要

增加两部

1 增加权限

<queries><package android:name="com.autoaidl.jsonprotocol" /><intent><action android:name="com.auto.aidl.AidlService" /></intent>
</queries>

2 init的时候要传入服务端的包名

服务器端只需引入aar包就行了,init的时候包名也可以传空。

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

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

相关文章

261.【华为OD机试真题】跳马(广度优先搜索(BFS)-JavaPythonC++JS实现)

🚀点击这里可直接跳转到本专栏,可查阅顶置最新的华为OD机试宝典~ 本专栏所有题目均包含优质解题思路,高质量解题代码(Java&Python&C++&JS分别实现),详细代码讲解,助你深入学习,深度掌握! 文章目录 一. 题目二.解题思路三.题解代码Python题解代码JAVA题解…

第13章 网络 Page818 UDP(和TCP的比较)

TCP核心类 asio::ip::tcp::socket;//网络套接字 asio::ip::tcp::endpoint;//边接端地址 asio::ip::tcp::resolver;//地址解析器 asio::ip::tcp::acceptor;//连接接受器 UPD核心类 asio::ip::udp::socket;//网络套接字 asio::ip::udp::endpoint;//边接端地址 asio::ip::udp::…

numpy随机选择函数

numpy随机选择函数 numpy.random.choise(a, sizeNone, replaceTrue, pNone) a : 一维列表或者整数&#xff0c; 表示抽取的列表。 size : 整数或者元组&#xff0c;抽取的矩阵形状 repalce : 是否放回&#xff0c; TRUE表示放回。FALSE表示不返回。 p : 随机选择的概率分布 im…

及其详细的Markdown基础-学习笔记(附有使用案例)

Markdown 基础语法 查看更多学习笔记&#xff1a;GitHub&#xff1a;LoveEmiliaForever 标题创建 标题语法格式 在文字前添加一至六个#即可创建标题 标题是有等级的&#xff0c;具体等级根据#个数决定 由于标题等级参与构建整篇文章的架构&#xff0c;编写时应该遵循如下规…

json字符串的处理

json字符串的处理 【1】解析json字符串&#xff08;1&#xff09;如果json格式字符串 &#xff0c;最外层 是 中括号&#xff0c;表示数组&#xff0c;就使用方法&#xff08;2&#xff09;如果json格式字符串&#xff0c;最外层是 大括号&#xff0c;表示对象&#xff0c;就是…

第九篇:node静态文件服务(中间件)

&#x1f3ac; 江城开朗的豌豆&#xff1a;个人主页 &#x1f525; 个人专栏 :《 VUE 》 《 javaScript 》 &#x1f4dd; 个人网站 :《 江城开朗的豌豆&#x1fadb; 》 ⛺️ 生活的理想&#xff0c;就是为了理想的生活 ! &#x1f4d8; 引言&#xff1a; 当今互联网时代&am…

JavaScript中延迟加载的方式有哪些

在web前端开发中&#xff0c;性能优化一直是一个非常重要的话题。当我们开发一个页面时&#xff0c;为了提高用户的体验和页面加载速度&#xff0c;我们往往需要采用一些延迟加载的技术。JavaScript中延迟加载的方式有很多种&#xff0c;下面我将为大家详细介绍几种常用的方式。…

android studio模拟器不能打开

Andriod:The selected AVD is currently running in the Emulator. Please exit the emulator instance… 1.点击 2.删除下面文件 3.重新打开即可 参考

Midjourney Niji魔法绽放:风格各异、场景多变的动漫女孩

所有的提示词&#xff0c;gzh&#xff1a;七哥的AI日常 大家好&#xff0c;欢迎回来&#xff0c;今天我们继续学习niji。 今天我们为大家制作了29款可爱的风格各异的女孩图片&#xff0c;可用于制作手机壁纸、海报、宣传画包括卡头人像垫图等&#xff0c;图片风格各异&#x…

天锐绿盾 | 企业办公、设计院、设计行业图档加密系统、办公核心文件数据\资料防泄密软件

天锐绿盾作为一款专业的企业信息化安全管理解决方案&#xff0c;特别适用于企业办公、设计院、设计行业等场景&#xff0c;为这些行业提供图档加密系统和办公核心文件数据防泄密软件。 PC端&#xff1a;https://isite.baidu.com/site/wjz012xr/2eae091d-1b97-4276-90bc-6757c5d…

一起玩儿物联网人工智能小车(ESP32)——63 SD和TF卡模块的使用

摘要&#xff1a;本文介绍SD和TF卡模块的使用方法 前面介绍了非易失性存储的使用方法&#xff0c;由于空间和本身只支持键值对的限制&#xff0c;非易失性存储只适用于少量数据的记录。而不适用于各种声音、图片、大量数据等情况的使用。这时候就需要有文件系统或者更大容量存…

如何将OpenAI Sora生成的普通AI视频转化为Vision Pro的空间视频,沉浸式体验

【基于AI的Vision Pro空间视频】工作流:这个工作流程用于将2D视频转换为适用于 Vision Pro的Spatial视频: 1、使用Deep3D将2D视频转换为3D SBS: 使用Deep3D工具将2D视频转换为3D SBS格式: 转换例子:Prediction– lucataco/deep3d – Replicatehttps://replicate.com/…

【ArcGIS Pro二次开发】(81):文本符号_CIMTextSymbol

CIMTextSymbol是用于绘制文本图形注释的文本符号。 0、属性 Angel文本符号的放置角度BlockProgression多行文本的堆叠方向Callout引线DrawSoftHyphen连字符FlipAngle文本翻转&#xff08;镜像&#xff09;到位的角度FontEffects上下标FontEncoding获取文字的EncodingFontFamil…

Linux 性能分析工具汇总

Linux 性能分析工具汇总 出于对Linux操作系统的兴趣&#xff0c;以及对底层知识的强烈欲望&#xff0c;因此整理了这篇文章。本文也可以作为检验基础知识的指标&#xff0c;另外文章涵盖了一个系统的方方面面。如果没有完善的计算机系统知识&#xff0c;网络知识和操作系统知识…

关于Future的使用

关于Future的使用 1 说明2 使用 在日常处理业务中,在某些定时任务处理数据时,因待处理数据量较大,如上千上万数据处理.虽然可以使用线程池异步处理,但是线程池处理速度和队列存放能力有限,为保护线程池稳定,需要控制数据处理频率,常见如分批次处理数据, 在多线程处理中分批次,一…

【题解】SPOJ8791 DYNALCA - Dynamic LCA

原题链接 题意 动态求 LCA 板子题。 维护一个森林&#xff0c;支持加边、删边和求 LCA 操作。 思路 不难想到 LCT。 现在问题就是如何在 LCT 上求两个点 u , v u,v u,v 的 LCA。 先进行 access ⁡ ( u ) \operatorname{access}(u) access(u)&#xff0c;此时 u u u 到…

springboot 异步执行方法详细介绍

在Spring Boot中&#xff0c;异步执行方法是一种提高应用程序性能和响应性的技术。通过异步执行&#xff0c;你可以在处理耗时的业务逻辑时&#xff0c;不需要阻塞当前线程&#xff0c;从而提高应用程序的吞吐量和并发处理能力。 基本概念 在Spring中&#xff…

【Oracle】玩转Oracle数据库(二):体系结构、存储结构与各类参数

前言 嘿伙计们&#xff01;准备好了吗&#xff1f;今天我要和你们探讨一个酷炫的话题——Oracle数据库&#xff01;&#x1f389; 在这篇博文【Oracle】玩转Oracle数据库&#xff08;二&#xff09;&#xff1a;体系结构、存储结构与各类参数&#xff0c;我们要揭开Oracle数据库…

二叉搜索树——迭代实现

———————————————————— 普通的树形结构中数据是杂乱无章的&#xff0c;实际意义不大&#xff0c;要想更好的管理数据&#xff0c;需要让数据有序&#xff0c;二叉搜索树又称二叉排序树&#xff0c;是一种特殊的树形结构。 规定一般的二叉搜索树的左节点小于…

FPGA 高速接口(LVDS)

差分信号环路测试 1 概述 LVDS&#xff08;Low Voltage Differential Signalin&#xff09;是一种低振幅差分信号技术。它使用幅度非常低的信号&#xff08;约350mV&#xff09;通过一对差分PCB走线或平衡电缆传输数据。大部分高速数据传输中&#xff0c;都会用到LVDS传输。 …