android开发 使用Messenger进行进程间通信

Messenger有两个构造方法。
Messenger recevierMessenger = new Messenger(IBinder target);
Messenger recevierMessenger = new Messenger(Handler target);
能传handler和ibinder,

服务端进程

com.jn.testmessagerservice

创建一个service来处理客户端的链接请求,创建一个handler、一个messenger,然后在Service的onBind中返回这个Messager对象的binder。使用客户端的Messager来回复信息。

  public class MessengerService extends Service {private static class MessengerHandler extends Handler {@Overridepublic void handleMessage(@NonNull Message msg) {super.handleMessage(msg);if (msg.what == 1) {Bundle bundle = msg.getData();String content = bundle.getString("content");Log.d("handleMessage", content);//回复消息Messenger messenger1 = msg.replyTo;Message message = Message.obtain();message.what = 2;Bundle replyBundle = new Bundle();replyBundle.putString("content","服务端发给客户端!!!!");message.setData(bundle);try {messenger1.send(message);} catch (RemoteException e) {throw new RuntimeException(e);}}}}private final Messenger messenger = new Messenger(new MessengerHandler());public MessengerService() {}@Overridepublic IBinder onBind(Intent intent) {return messenger.getBinder();}
}

客户端

com.jn.testmessengerclient

启动service来发送客户端的信息,接收服务端的信息

启动service

   Intent intent = new Intent();intent.setClassName("com.jn.testmessagerservice", "com.jn.testmessagerservice.MessengerService");bindService(intent, serviceConnection, Service.BIND_AUTO_CREATE);

发送消息,处理消息

/*** 接受服务端的信息*/private Handler recevierHandler = new Handler(new Handler.Callback() {@Overridepublic boolean handleMessage(@NonNull Message msg) {Bundle bundle = msg.getData();String content = bundle.getString("content");Log.d("recevice", "从服务器接收的参数:" + content);return false;}});/*** 让Message持有Messenger进行传输,方便服务端发送消息*/private Messenger recevierMessenger = new Messenger(recevierHandler);private Messenger messenger;private final ServiceConnection serviceConnection = new ServiceConnection() {@Overridepublic void onServiceConnected(ComponentName name, IBinder service) {messenger = new Messenger(service);Message msg = Message.obtain();msg.what = 1;msg.replyTo = recevierMessenger;//服务端回复消息使用Bundle bundle = new Bundle();bundle.putString("content", "客户发送数据");msg.setData(bundle);try {messenger.send(msg);} catch (RemoteException e) {throw new RuntimeException(e);}}@Overridepublic void onServiceDisconnected(ComponentName name) {}};

如果启动service没有反应,请在AndroidManifest中添加queries。

    <queries><package android:name="com.jn.testmessagerservice"/></queries>

运行如下
在这里插入图片描述

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

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

相关文章

水位传感器优点有哪些

水位传感器是一种用于检测液体水位的重要设备&#xff0c;在各种工业和民用场景中起着至关重要的作用。其中&#xff0c;光学液位传感器作为一种先进的水位检测技术&#xff0c;在市场上备受青睐&#xff0c;其优点主要包括以下几个方面。 光学液位传感器内部所有元器件均经过…

如果使用0x对node项目进行性能分析

0x 是一个强大的 Node.js 性能分析工具&#xff0c;它可以帮助你进行堆栈追踪和火焰图分析。使用 0x 可以帮助你理解 Node.js 应用在运行时的性能瓶颈&#xff0c;进而优化代码。以下是如何使用 0x 对 Node.js 项目进行性能分析的步骤&#xff1a; 安装0x 首先&#xff0c;你…

基于一款最多能够支持10000路的 modbus RS485 led灯光控制板做灯控程序

背景 介绍一款之前用过的一款设备&#xff0c;基于RS485通讯协议&#xff0c;控制LED灯或RGB灯带。 设备介绍 之前用它来做智能中药柜的灯控板&#xff0c;结合物联网网关&#xff0c;modbus采集&#xff0c;mqtt转发&#xff0c;以及mqtt的rpc指令下发 设备图片 功能说明 …

LPA算法简介

1. 背景 标签传播算法(Label Propagation Algorithm)是一种基于图的半监督学习方法&#xff0c;其基本思路是用已标记节点的标签信息去预测未标记节点的标签信息。 2. 算法流程 1. 为每个节点随机的指定一个自己特有的标签&#xff1b; 2. 逐轮刷新所有节点的标签&#xff0…

前沿论文 | LLM推理性能优化最佳实践

原文&#xff1a;安全验证 - 知乎​ 来源 题目&#xff1a;LLM Inference Performance Engineering: Best Practices 地址&#xff1a;https://www.databricks.com/blog/llm-inference-performance-engineering-best-practices 在这篇博文中&#xff0c;MosaicML工程团队分析了…

2024-4-22 群讨论:微服务启动预热相关

以下来自本人拉的一个关于 Java 技术的讨论群。关注公众号&#xff1a;hashcon&#xff0c;私信进群拉你 Hotspot JVM 进程启动后&#xff0c;流量到来的时候 JIT 吃掉很多 CPU&#xff0c;如何观察到&#xff1f; 很多途径都能观察到&#xff1a; top -Hp&#xff1a;这个需…

ApiHug 的初心-ApiHug101

视频 秒懂 ApiHug -019 HOPE &#x1f525; H.O.P.E.: Help other people excellent &#x1f49d; 是这个项目最初的初心 &#x1f917; ApiHug {Postman|Swagger|Api...} 快↑ 准√ 省↓ &#x1f3e0; gitee github search ApiHug ApiHug &#x1f917; ApiHug {Post…

云架构(五)BBF模式

BFF模式&#xff08;Backends for Frontends pattern&#xff09;- https://learn.microsoft.com/en-us/azure/architecture/patterns/backends-for-frontends。 创建单独的后台服务用以提供给特定的前端或者接口。当你希望避免为多个接口定制单独的后台时&#xff0c;此模…

7天录用!录用→检索仅21天!CCF推荐毕业神刊

本周投稿推荐 SSCI • 2/4区经管类&#xff0c;2.5-3.0&#xff08;录用率99%&#xff09; SCIE&#xff08;CCF推荐&#xff09; • 计算机类&#xff0c;2.0-3.0&#xff08;最快18天录用&#xff09; SCIE&#xff08;CCF-C类&#xff09; • IEEE旗下&#xff0c;1/2…

阿里开源黑白图片上色算法DDColor的部署与测试并将模型转onnx后用c++推理

阿里开源黑白图片上色算法DDColor的部署与测试并将模型转onnx后用c++推理 文章目录 阿里开源黑白图片上色算法DDColor的部署与测试并将模型转onnx后用c++推理简介环境部署下载源码安装环境下载模型测试一下看看效果模型转onnx测试一下生成的onnx模型看看效果C++ 推理简介 DDCo…

C# 中的 null 类型详解与在使用null类型时,有哪些常见陷阱需要避免?

在 C# 中&#xff0c;null 是一个非常特殊的概念&#xff0c;它是表示一个变量没有分配任何值的占位符。在本博客中&#xff0c;我们将深入探讨 C# 中的 null 类型&#xff0c;包括它的定义、特性、使用方法以及如何在面向对象编程中发挥作用。 1. null 类型在 C# 中的定义及特…

限时疯抢!阿里云服务器十大优惠活动合集,手慢无

限时疯抢&#xff01;阿里云服务器十大优惠活动合集&#xff0c;手慢无阿里云服务器优惠活动&#xff08;2024年最新整理&#xff09;&#xff0c;阿里云服务器优惠活动大全、2024阿里云优惠政策整理&#xff0c;包括官方优惠活动主会场、2024年4月优惠活动分为&#xff1a;免费…

遥测、遥信、遥控和遥调

遥测、遥信、遥控和遥调是电力系统自动化、远程监控和控制领域的关键术语&#xff0c;尽管它们在应用范围广泛的工业控制系统中也普遍存在。它们描述了远程测量和控制过程中的不同方面。 遥测&#xff08;Telemetry&#xff09; 遥测是指从远程或不便接近的地方自动测量和传输…

服务器(Linux、AIX)监控软件【nmon】使用

目录 1.安装 2.使用 3.使用 4.采集数据 5.查看log&#xff08;根据结果&#xff0c;生成报表&#xff09; 6.分析结果 1.安装 apt-get install nmon 2.使用 输入nmon进入下面的界面 x Use these keys to toggle statistics on/off: …

牛客网刷题 | BC60 判断是不是字母

描述 KiKi想判断输入的字符是不是字母&#xff0c;请帮他编程实现。 输入描述&#xff1a; 多组输入&#xff0c;每一行输入一个字符。 输出描述&#xff1a; 针对每组输入&#xff0c;输出单独占一行&#xff0c;判断输入字符是否为字母&#xff0c;输出内容详见输出样例…

加密、解密、签名、验签、数字证书、CA浅析

一、加密和解密 加密和解密应用的很广&#xff0c;主要作用就是防止数据或者明文被泄露。 加解密算法主要有两大类&#xff0c;对称加密和非对称加密。对称加密就是加密和解密的密钥都是一个&#xff0c;典型的有AES算法。非对称加密就是有公钥和私钥&#xff0c;公钥可以发布…

【Web】DASCTF X GFCTF 2024|四月开启第一局 题解(全)

目录 EasySignin cool_index SuiteCRM web1234 法一、条件竞争(没成功) 法二、session反序列化 EasySignin 先随便注册个账号登录&#xff0c;然后拿bp抓包改密码(username改成admin) 然后admin / 1234567登录 康好康的图片功能可以打SSRF&#xff0c;不能直接读本地文…

最详细步骤解决:Apps targeting Android12 and higher are required to specify...

问题原因&#xff1a; 当targetSdkVersion>31时&#xff0c;需要在AndroidManifest.xml中配置android:exported的值&#xff0c;该值为boolean类型。 android:exported解释&#xff1a; activity 是否可由其他应用的组件启动&#xff1a; 如果设为 "true"&#…

持续更新。。。

1、JAVA面试指南 https://javaguide.cn/ 简历优化&#xff1a;突出与应聘职位相关的项目经验、技术栈、技能证书和专业成就。确保简历中的技术关键词与JD&#xff08;Job Description&#xff09;相符。 自我评估&#xff1a;对照目标职位要求&#xff0c;梳理自身Java技能树&…

Java面试题:什么是Java中的单元测试以及如何编写单元测试?

Java中的单元测试是一种软件开发方法&#xff0c;用于验证代码中的最小可测试单元&#xff08;通常是方法或类&#xff09;是否按预期工作。单元测试的目标是隔离代码的各个部分&#xff0c;并验证每个部分是否都能正确执行其预期的功能。 在Java中&#xff0c;JUnit是最常用的…