Message的进程间通信 Messenger完全解析(what)

说到Android进程间通信,大家肯定能想到的是编写aidl文件,然后通过aapt生成的类方便的完成服务端,以及客户端代码的编写。如果你对这个过程不熟悉,可以查看Android aidl Binder框架浅析

当然今天要说的通信方式肯定不是通过编写aidl文件的方式,那么有请今天的主角:Messenger。ok,这是什么样的一个类呢?我们看下注释

This allows for the implementation of message-based communication across processes

允许实现基于消息的进程间通信的方式。

那么,什么叫基于消息的进程间通信方式呢?看个图理解下:

可以看到,我们可以在客户端发送一个Message给服务端,在服务端的handler中会接收到客户端的消息,然后进行对应的处理,处理完成后,再将结果等数据封装成Message,发送给客户端,客户端的handler中会接收到处理的结果。

这样的进程间通信是不是很爽呢?

  • 基于Message,相信大家都很熟悉
  • 支持回调的方式,也就是服务端处理完成长任务可以和客户端交互
  • 不需要编写aidl文件

此外,还支持,记录客户端对象的Messenger,然后可以实现一对多的通信;甚至作为一个转接处,任意两个进程都能通过服务端进行通信,这个后面再说。

看到这,有没有一些的小激动,我们可以不写aidl文件,方便的实现进程间通信了,是不是又可以装一下了。哈,下面看个简单的例子。


二、通信实例

这个例子,通过两个apk演示,一个apk是Server端,一个是Client端;

(1) Server端

http://9x9x40x.eju.cn/

http://2c2c29c.eju.cn/

http://619gwq2a.eju.cn/

http://579van1y.eju.cn/

http://581wdq5i.eju.cn/

http://199tqq7g.eju.cn/

http://352rxs9t.eju.cn/

http://785dea7n.eju.cn/

http://008qun3c.eju.cn/

http://042axu3u.eju.cn/

http://822kyy0w.eju.cn/

http://899vkn1h.eju.cn/

http://636oxg8b.eju.cn/

http://012zqx6c.eju.cn/

http://614qra2j.eju.cn/

http://233orw2a.eju.cn/

http://921yts9j.eju.cn/

http://959hwm9r.eju.cn/

http://627znf9t.eju.cn/

http://340gyq5a.eju.cn/

http://763ijz9u.eju.cn/

http://426tne0v.eju.cn/

http://197nff8p.eju.cn/

http://895egb4g.eju.cn/

http://942oez2a.eju.cn/

http://607hsj3c.eju.cn/

http://205uuf4g.eju.cn/

http://398sfi0u.eju.cn/

http://234pqz5i.eju.cn/

http://630zpp2c.eju.cn/

http://057ivg0u.eju.cn/

http://224fua2q.eju.cn/

http://417jrk0e.eju.cn/

http://573mgy4q.eju.cn/

http://966yef5z.eju.cn/

http://472uau7n.eju.cn/

http://674aay3c.eju.cn/

http://636pwg2j.eju.cn/

http://356ibf3t.eju.cn/

http://841vxu4q.eju.cn/

http://142czw1h.eju.cn/

http://927ing9s.eju.cn/

http://336rrd6l.eju.cn/

http://206gnh5s.eju.cn/

http://722rux3u.eju.cn/

http://832dst4f.eju.cn/

http://887mok4z.eju.cn/

http://897unj7y.eju.cn/

http://910xqq2q.eju.cn/

http://540edr8q.eju.cn/

http://768sdl9d.eju.cn/

http://797iqk6m.eju.cn/

http://333zba9t.eju.cn/

http://363idx9b.eju.cn/

http://137lrg1x.eju.cn/

http://060ixn6l.eju.cn/

http://851wau5q.eju.cn/

http://067bdh6c.eju.cn/

http://993ifw3c.eju.cn/

http://989opp9s.eju.cn/

http://849mfq4g.eju.cn/

http://344hzb9b.eju.cn/

http://379hfo2l.eju.cn/

http://383rew9u.eju.cn/

http://179tlr4f.eju.cn/

http://490jkr3o.eju.cn/

http://322hsu9j.eju.cn/

http://360ieq6u.eju.cn/

http://469akq3e.eju.cn/

http://855ucc4x.eju.cn/

http://153bax0m.eju.cn/

http://868vck4q.eju.cn/

http://463zjb9n.eju.cn/

http://224fua5y.eju.cn/

http://862mix1y.eju.cn/

http://495kmd4o.eju.cn/

http://536xqf5i.eju.cn/

http://315hrc9k.eju.cn/

http://877ebh4g.eju.cn/

http://155dbe7x.eju.cn/

http://296emg8h.eju.cn/

http://022jos6l.eju.cn/

http://242fzu8a.eju.cn/

http://578eno1r.eju.cn/

http://945yzd2s.eju.cn/

http://430kwp0f.eju.cn/

http://210gqp2k.eju.cn/

http://968fyj8q.eju.cn/

http://405uib7o.eju.cn/

http://583mkz8z.eju.cn/

http://410tmo6m.eju.cn/

http://043kuw6m.eju.cn/

http://582mkw1h.eju.cn/

http://430cct0p.eju.cn/

http://293flz5z.eju.cn/

http://595mme4p.eju.cn/

http://944pdd6k.eju.cn/

http://292flw8h.eju.cn/

http://792rlw3u.eju.cn/

http://396ilf0l.eju.cn/

http://016jme6l.eju.cn/

http://705snc3n.eju.cn/

http://069pip5d.eju.cn/

http://113cqz4v.eju.cn/

http://876ugh7x.eju.cn/

http://461aiw0w.eju.cn/

http://348hyl9j.eju.cn/

http://260ffq4q.eju.cn/

http://017qvl9t.eju.cn/

http://979xho6a.eju.cn/

http://983yjz5s.eju.cn/

http://627yog6k.eju.cn/

http://247gzk2r.eju.cn/

http://231fvs5z.eju.cn/

http://859lgr1x.eju.cn/

http://602opw5t.eju.cn/

http://841vxt4w.eju.cn/

http://491ufs7o.eju.cn/

http://185djd4q.eju.cn/

http://519oro2r.eju.cn/

http://518mqk5y.eju.cn/

http://615pre2j.eju.cn/

http://183mew1y.eju.cn/

http://584xdz2a.eju.cn/

http://119dro7x.eju.cn/

http://312iqw3m.eju.cn/

http://752sbx0l.eju.cn/

http://937mal1y.eju.cn/

http://680qjr9b.eju.cn/

http://953zlr8d.eju.cn/

http://262uiz7o.eju.cn/

http://862tdw3n.eju.cn/

http://407tig4f.eju.cn/

http://311iru3t.eju.cn/

http://614prc2k.eju.cn/

http://310rkp6l.eju.cn/

http://458lam7f.eju.cn/

http://706jtj0v.eju.cn/

http://336rrd9t.eju.cn/

http://010aqp6v.eju.cn/

http://847vyj8h.eju.cn/

http://200fnp7y.eju.cn/

http://079bhn0e.eju.cn/

http://352hav6b.eju.cn/

http://439abq6m.eju.cn/

http://979ygo9d.eju.cn/

http://642ztt6k.eju.cn/

http://902ntz1z.eju.cn/

http://487ljj7x.eju.cn/

http://370ggs9b.eju.cn/

http://104std7m.eju.cn/

http://695qld2k.eju.cn/

http://762cyt7o.eju.cn/

http://494vhz1x.eju.cn/

http://425lte0g.eju.cn/

http://730bqp0v.eju.cn/

http://www.eju.cn/403.html?aspxerrorpath=/

http://876mlh8p.eju.cn/

http://392gkv9j.eju.cn/

http://927gpg5j.eju.cn/

http://338iwl9d.eju.cn/

http://258ufo7i.eju.cn/

http://237fwj5z.eju.cn/

http://272vly5h.eju.cn/

http://267gek2k.eju.cn/

http://490uho3e.eju.cn/

http://545nze2q.eju.cn/

http://310qmp9s.eju.cn/

http://035axe6v.eju.cn/

http://907otm5i.eju.cn/

http://055kwc7n.eju.cn/

http://718cmi7o.eju.cn/

http://469jdo3u.eju.cn/

http://528voi4g.eju.cn/

http://347hyj2k.eju.cn/

http://537dcl1y.eju.cn/

http://903xpy5z.eju.cn/

http://544oya8z.eju.cn/

http://364hdb9c.eju.cn/

http://478kgm1n.eju.cn/

http://335gwd8a.eju.cn/

http://003jhw0v.eju.cn/

http://829vto8h.eju.cn/

http://www.eju.cn/403.html?aspxerrorpath=/

http://800vos5y.eju.cn/

http://250oxp8r.eju.cn/

http://525msc1h.eju.cn/

http://976omi5i.eju.cn/

http://699omo1i.eju.cn/

http://425tnc4f.eju.cn/

http://887feg4h.eju.cn/

http://119eqn8y.eju.cn/

http://218nmj5i.eju.cn/

http://526nuh8g.eju.cn/

http://197trl4f.eju.cn/

http://578mhm7y.eju.cn/

http://631gav5k.eju.cn/

http://368hdm9k.eju.cn/

http://461tyq0v.eju.cn/

http://551nbs1i.eju.cn/

http://993xky9i.eju.cn/

http://542xst5h.eju.cn/

http://219olm5i.eju.cn/

http://552mcv8g.eju.cn/

http://726rtg3u.eju.cn/

http://411tlq0w.eju.cn/

http://237fxi8a.eju.cn/

http://326zaj9t.eju.cn/

http://683qiy2j.eju.cn/

http://233pqx2b.eju.cn/

http://009zon0k.eju.cn/

http://867vdh4q.eju.cn/

http://765bya0v.eju.cn/

http://730bro6m.eju.cn/

http://774rha3u.eju.cn/

http://541wuq1z.eju.cn/

http://373ihy9d.eju.cn/

http://924ozd5i.eju.cn/

http://401buv4f.eju.cn/

http://751sbs6v.eju.cn/

http://621aor3c.eju.cn/

http://861teu4o.eju.cn/

http://553mbx4p.eju.cn/

http://560djt1z.eju.cn/

http://511nru1p.eju.cn/

http://277ffi4q.eju.cn/

http://510evt5h.eju.cn/

http://588enm1y.eju.cn/

http://842uyv3n.eju.cn/

http://159bcn0e.eju.cn/

http://279pam9s.eju.cn/

http://672pgu2k.eju.cn/

http://618orl5t.eju.cn/

http://897vni4w.eju.cn/

http://893ulz0f.eju.cn/

http://424jsb0e.eju.cn/

http://229xyp8r.eju.cn/

http://510mqr0f.eju.cn/

http://701bis7n.eju.cn/

http://936yvg9j.eju.cn/

http://856tcg4o.eju.cn/

http://608ykk9s.eju.cn/

http://435tsb3e.eju.cn/

http://162nzs5h.eju.cn/

http://617pqi9c.eju.cn/

http://560vzp7o.eju.cn/

http://095zle9k.eju.cn/

http://704rpb3m.eju.cn/

http://648pzl5a.eju.cn/

http://152mvt1x.eju.cn/

http://816usf7x.eju.cn/

http://450kcp7d.eju.cn/

http://835dqc1y.eju.cn/

http://139cwm7x.eju.cn/

http://659zvl2b.eju.cn/

http://319qml3c.eju.cn/

http://939wwn8h.eju.cn/

http://363idz9c.eju.cn/

http://425kue4p.eju.cn/

http://810mwt1y.eju.cn/

http://664qdb9c.eju.cn/

http://949ndr8q.eju.cn/

http://198eml8h.eju.cn/

http://494thx0v.eju.cn/

http://343iyy9d.eju.cn/

http://124syc6f.eju.cn/

http://293phv2a.eju.cn/

http://264fdb1i.eju.cn/

http://134tbc7p.eju.cn/

http://050rft3d.eju.cn/

http://458kck6v.eju.cn/

http://618pql9c.eju.cn/

http://270obp5h.eju.cn/

http://813vsz8g.eju.cn/

http://803voz4p.eju.cn/

http://767jjk3x.eju.cn/

http://386gjf5a.eju.cn/

http://138dvm0g.eju.cn/

http://510vmp4g.eju.cn/

http://343hzz0k.eju.cn/

http://740ziv6u.eju.cn/

http://602qnv2k.eju.cn/

http://216grh2j.eju.cn/

http://495lld7e.eju.cn/

http://197tqm4f.eju.cn/

http://665fif2b.eju.cn/

http://738rwl3s.eju.cn/

http://593nmy8z.eju.cn/

http://668gjo6k.eju.cn/

http://290vqr8p.eju.cn/

http://022auu6t.eju.cn/

http://140cas0f.eju.cn/

http://633pxz9i.eju.cn/

http://711trt7w.eju.cn/

http://079ahn3u.eju.cn/

http://047yyi6a.eju.cn/

http://145dxd3o.eju.cn/

http://104dob7y.eju.cn/

http://232fvv2q.eju.cn/

http://378zmo3c.eju.cn/

http://929map4a.eju.cn/

http://069aep3t.eju.cn/

http://755ihg0u.eju.cn/

http://664qcc6v.eju.cn/

http://764byy6m.eju.cn/

http://258nvk5i.eju.cn/

http://545efg5i.eju.cn/

http://152shy6m.eju.cn/

http://093kgx7n.eju.cn/

http://720sup3m.eju.cn/

http://219vwq7i.eju.cn/

http://411tls3e.eju.cn/

http://799smp6v.eju.cn/

http://178snp7o.eju.cn/

http://326huf9j.eju.cn/

http://022ips6k.eju.cn/

http://662yyu8r.eju.cn/

http://162nzs8p.eju.cn/

http://146dah1g.eju.cn/

http://966yeh2r.eju.cn/

http://223fux1i.eju.cn/

http://855exb8p.eju.cn/

http://149dzn8g.eju.cn/

http://891dfq4f.eju.cn/

http://370ggr9j.eju.cn/

http://381xnw2b.eju.cn/

http://290fmr2r.eju.cn/

http://558obk5s.eju.cn/

http://787jol0v.eju.cn/

http://572xau2a.eju.cn/

http://777bbf9u.eju.cn/

http://290vqt8p.eju.cn/

http://145udg1y.eju.cn/

http://893tmy7w.eju.cn/

http://528ntl8h.eju.cn/

http://043rfa3c.eju.cn/

http://614qrb6u.eju.cn/

http://346hzg9j.eju.cn/

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-15 00:53:02

Message的进程间通信 Messenger完全解析(what)的相关文章

Android 基于Message的进程间通信 Messenger完全解析

一.概述 说到Android进程间通信,大家肯定能想到的是编写aidl文件,然后通过aapt生成的类方便的完成服务端,以及客户端代码的编写.如果你对这个过程不熟悉,可以查看Android aidl Binder框架浅析: 当然今天要说的通信方式肯定不是通过编写aidl文件的方式,那么有请今天的主角:Messenger.ok,这是什么样的一个类呢?我们看下注释 This allows for the implementation of message-based communication acr

(转载)Android中的Service:Binder,Messenger,AIDL(2)

前言 前面一篇博文介绍了关于Service的一些基本知识,包括service是什么,怎么创建一个service,创建了一个service之后如何启动它等等.在这一篇博文里有一些需要前一篇铺垫的东西,建议没有看过前一篇博文的同学先去看一下前一篇: Android中的Service:默默的奉献者 (1) . 但是在前一篇博文中也有一些遗漏的东西--主要是关于bindService()这一块的具体细节.由于这一块涉及的东西还是比较多,所以在这里单独提出来了.闲话不多说,进入正文. 1.bindServ

(转载)你真的理解Android AIDL中的in,out,inout么?

前言 这其实是一个很小的知识点,大部分人在使用AIDL的过程中也基本没有因为这个出现过错误,正因为它小,所以在大部分的网上关于AIDL的文章中,它都被忽视了--或者并没有,但所占篇幅甚小,且基本上都是官方文档的译文,译者读者其实都不知其然.这几天在研究AIDL,偏偏我又是个执拗的性子,遇着不清不楚的东西就是想把它捋清楚,就下了些功夫研究了下AIDL中的定向tag,研究了下它的 in , out , inout . 整理而成此博文. 1.概述 首先要说的是定向tag是AIDL语法的一部分,而 in

【Android】17.5 利用Messenger实现进程间通信(IPC)

分类:C#.Android.VS2015: 创建日期:2016-03-03 一.Messager类简介 本章前面曾经说过,要在Android上执行带服务的进程间通信(IPC),既可以用Messenger类来实现,也可以用更高级的AIDL技术来实现(AIDL:Android接口定义语言). 这一节我们学习首选的方案:用Messenger实现IPC的基本设计思路. IPC:进程间通信(Inter-process Communication). IPC with Service:带服务的进程间通信.

Android进程间通信

如果想要进行IPC通信,一般写一个AIDL接口,再写一个Service子类,然后实现AIDL接口 当做IBinder返回给Activity界面层. 如果不想写AIDL接口文件,只是单线程中与Service进行通信 我们可以用Android写好的Messenger类来处理,一样能将消息传递给Service进行通信. 什么是aidl: aidl是 Android Interface definition language的缩写,它是一种android内部进程通信接口的描述语言,通过它我们可以定义进程

Android 之 IPC 进程通信全解析

Android 之 IPC 进程通信全解析 本篇博客的框架 什么是IPC IPC(Inter-Process Communication) 进程间通信,是指两个不同进程之间数据交换的过程. 在明确其之前,需要先搞懂几个概念: 线程:CPU可调度的最小单位,是程序执行流的最小单元:线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源. 进程: 一个执行单元,在PC 和移动设备上一

Android Messenger 跨进程通信

如果你需要在不同进程间通信,你可以在Service中使用Messenger来实现进程中通信. 如果使用这种方式,Service中需要定义一个Handler对象(负责对客户端发送过来的Message进行响应). Messenger可以共享给client一个IBinder对象,client通过这个IBinder对象向Service发送Message,而前面提到的Handler对象是这一切的基础. 注:使用这种方式进行通信是不支持多线程的. 那就让我们来看看使用这种方式进行通信吧! 注:Service

Android组件系列----Android Service深入解析

花了周末两天的时间,整理了一下作为Android四大组件之一的Service的基础知识,通过这篇文章,应该可以明白:对Service的理解.在什么地方使用.怎么使用.要注意哪些问题等. [本文主要内容] 一.Service的基本概念(四大组件之一)二.定义(启动)一个Service 1.如何定义(启动)一个Service: 2.停止一个started服务有两种方法 3.onStartCommand方法的返回值 三.IntentService 1.IntentService的引入 2.Intent

pull解析xml文件

pull解析和程序运行一样,从上到下执行,一个一个执行,每个节点会有对应的时间码,然后根据名字可以判断出他是那个具体的节点. package com.example.pullxml; import java.io.InputStream; import java.util.ArrayList; import java.util.List; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserExcepti