使用Messenger的IPC

本文深入探讨Android系统下跨进程通讯的两种主要方式:使用AIDL和Messenger对象。重点阐述如何利用Messenger实现客户端和服务端之间的双向消息传递。包括服务端实例化并重写handleMessage方法用于接收消息,以及客户端如何通过IBinder与服务端建立连接并发送消息。同时解释了如何在服务端返回数据给客户端,以及使用Parcelable接口的重要性。

以下是个人理解,错的地方希望指正出来,谢谢。

想要跨进程的通讯,有两种方法,一种是使用aidl,这个前面文章有提到。

还有一种是使用Messenger对象,这个对象实现了Parcelable接口。

在服务端的Service中我们要先实例化一个Messenger对象,传入一个Handler,并且重写handleMessage方法,用来处理客户端发来的消息。

然后在onBind方法中返回mMessenger.getBinder();

之后是客户端,客户端想要与之通讯,必须持有服务端的IBinder。

bindService的ServiceConncetion中拿到Messenger对象,可以使用实例化Messenger,把IBinder做参数传入。

实际上在实例化Messenger时,我们客户端持有的是远程的Binder,只是Android系统帮我们拿到了aidl接口。

拿到mMessenger时,就可以mMessenger.send(Message msg);实现通讯了。

那我们应该怎样让服务端来返回数据呢?

我们可以在send之前,让msg.replyTo=Messenger;这是一个新得实例化的Messenger,用来接收服务端的数据,和obj的使用时一样的。

在服务端就可以通过msg.replyTo拿到客户端的Messenger,之后就可以通过Messenger.send();把数据返回给我们的客户端,以达到双向通讯的效果。

而前面说到,我们如果想要发送数据到服务端,使用msg.obj是会出异常的,所以我们必须使用实现parcelable接口的方法来传递数据,还没有搞懂,稍后传上去。

标题基于SpringBoot的马术俱乐部管理系统设计与实现AI更换标题第1章引言介绍马术俱乐部管理系统的研究背景、意义、国内外研究现状、论文方法及创新点。1.1研究背景与意义阐述马术俱乐部管理系统对提升俱乐部管理效率的重要性。1.2国内外研究现状分析国内外马术俱乐部管理系统的发展现状及存在的问题。1.3研究方法以及创新点概述本文采用的研究方法,包括SpringBoot框架的应用,以及系统的创新点。第2章相关理论总结和评述与马术俱乐部管理系统相关的现有理论。2.1SpringBoot框架理论介绍SpringBoot框架的基本原理、特点及其在Web开发中的应用。2.2数据库设计理论阐述数据库设计的基本原则、方法以及在管理系统中的应用。2.3马术俱乐部管理理论概述马术俱乐部管理的基本理论,包括会员管理、课程安排等。第3章系统设计详细描述马术俱乐部管理系统的设计方案,包括架构设计、功能模块设计等。3.1系统架构设计给出系统的整体架构,包括前端、后端和数据库的交互方式。3.2功能模块设计详细介绍系统的各个功能模块,如会员管理、课程管理、预约管理等。3.3数据库设计阐述数据库的设计方案,包括表结构、字段设计以及数据关系。第4章系统实现介绍马术俱乐部管理系统的实现过程,包括开发环境、编码实现等。4.1开发环境搭建介绍系统开发所需的环境,包括操作系统、开发工具等。4.2编码实现详细介绍系统各个功能模块的编码实现过程。4.3系统测试与调试阐述系统的测试方法、测试用例以及调试过程。第5章系统应用与分析呈现马术俱乐部管理系统的应用效果,并进行性能分析。5.1系统应用情况介绍系统在马术俱乐部中的实际应用情况。5.2系统性能分析从响应时间、并发处理能力等方面对系统性能进行分析。5.3用户反馈与改进收集用户反馈,提出系统改进建议。第6章结论与展望总结马术俱乐部管理系统的设计与实现成果,并展望未来的研究
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值