美文网首页
Android服务之Messenger

Android服务之Messenger

作者: fengfancky | 来源:发表于2017-03-09 11:50 被阅读43次

如需让服务与远程进程通信,则可使用Messenger为您的服务提供接口。利用此方法,无需使用 AIDL 便可执行进程间通信 (IPC)。

与 AIDL 比较

当您需要执行 IPC 时,为您的接口使用Messenger要比使用 AIDL 实现它更加简单,因为Messenger会将所有服务调用排入队列,而纯粹的 AIDL 接口会同时向服务发送多个请求,服务随后必须应对多线程处理。对于大多数应用,服务不需要执行多线程处理,因此使用Messenger可让服务一次处理一个调用。如果您的服务必须执行多线程处理,则应使用AIDL来定义接口。

以下是Messenger的使用方法:

1.服务实现一个Handler,由其接收来自客户端的每个调用的回调

2.Handler用于创建Messenger对象(对Handler的引用)

3.Messenger创建一个IBinder,服务通过onBind()使其返回客户端

4.客户端使用IBinderMessenger(引用服务的Handler)实例化,然后使用后者将Message对象发送给服务

5.服务在其Handler中(具体地讲,是在handleMessage()方法中)接收每个Message

客户端发送消息,服务端接收来自客服端的消息。

服务端(service.apk):

1.MessageService.class

service_code.png

2.注册

service_xml.png

客户端(client.apk):

在Activity中:

1.开启远程服务:

open_service.png

2.发送消息:

send_message.png

3.解除绑定:

unbound_service.png

此示例并未说明服务如何对客户端作出响应。如果您想让服务作出响应,则还需要在客户端中创建一个Messenger。然后,当客户端收到onServiceConnected()回调时,会向服务发送一条Message,并在其send()方法的replyTo参数中包含客户端的Messenger。操作如下:

1.在客户端也创建一个Messenger:(client.apk)

new_messenger.png

2.当客户端收到onServiceConnected()回调时,向服务端发送一条Message,利用Message的replyTo携带客服端的Messenger:(client.apk)

3.服务端接收到客户端消息后:(service.apk)

service_reply.png

到此结束。

相关文章

  • Android服务之Messenger

    如需让服务与远程进程通信,则可使用Messenger为您的服务提供接口。利用此方法,无需使用 AIDL 便可执行进...

  • Android笔记之Messenger

    Messenger是Android中跨进程通信的一种方式,是对AIDL的简化封装版,使用简单方便,相对透明,不用考...

  • Android IPC之Messenger

    Messenger 翻译为信使,通过Messenger可以实现在不同进程间传递Message对象。Messenge...

  • 进程间通信

    Android 使用Messenger实现跨app通信

  • IPC之Messenger

    参考Android开发艺术探索 Messenger Messenger:信使,通过它可以不同进程中传递Messag...

  • Android Messenger

    service 定义一个Handle处理从client传递过来的message 通过Handle可以new一个se...

  • Android---Messenger-IPC通信

    Messenger的使用 服务端: client

  • android IPC 通信之Messenger

    android 中进程间通信,比较常用的有以下五种方法,intent,共享文件,Messenger,AIDL,so...

  • Android IPC通信之Messenger

    Messenger可以译为信使,顾名思义,可以通过它在不同进程中传递Message对象,在Message中放入我们...

  • Android IPC之Messenger详解

    一.Messenger简介 与AIDL进程间通信作用一样,Messenger是基于Message对象进行跨进程通信...

网友评论

      本文标题:Android服务之Messenger

      本文链接:https://www.haomeiwen.com/subject/shrwgttx.html