绑定Service 三种使用方式 之 利用Messenger实现进程双向通信_移动开发_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > 移动开发 > 绑定Service 三种使用方式 之 利用Messenger实现进程双向通信

绑定Service 三种使用方式 之 利用Messenger实现进程双向通信

 2014/10/23 15:26:14  畅遨  程序员俱乐部  我要评论(0)
  • 摘要:思路:(以下提供服务端简称服务端,访问服务端简称客户端)1.服务进程和客户端进程之间的通信传递的Message,所以服务端要有Handler对象来处理收到的Message对象。2.客户端给服务端发送Message对象利用的Messenger对象是从服务端传过来的。同理,若服务端给客户端发送Message,使用的Messenger是从客户端传递过来的。即,响应消息的一端要提供Messenger信使对象给对方端3.客户端先给服务端发送消息,服务端才能给客户端发信息作为回应。4.注:若实现双向通信
  • 标签:Service 实现 使用 利用 方式 messenger

 

思路:

   (以下 提供服务端简称服务端,访问服务端简称客户端)

    1. 服务进程和客户端进程之间的通信传递的Message,所以服务端要有Handler对象来处理收到的Message对象。

     2. 客户端给服务端发送Message对象利用的Messenger对象是从服务端传过来的。同理,若服务端给客户端发送Message,使用的Messenger是从客户端传递       过来的。即,响应消息的一端要提供Messenger信使对象给对方端

     3.客户端先给服务端发送消息,服务端才能给客户端发信息作为回应。

     4.注:若实现双向通信,服务端和客户端要都具备Handler对象和Messenger对象,Handler对象处理消息,Messenger发送消息。

   

    本文通过隐式Intent来绑定服务,需要设置Intent的action值,该值要与服务端配置文件中Intent-filter中设置的action属性对应。    需要在配置文件中注册服务,并设定exported属性为true,该属性的默认值是true.false表示外部进程无法访问该服务。

   

 

 实现步骤:

1.创建Service进程,在Service中创建Handler对象,用于处理客户端发送的Message;利用该Handler对象创建Messenger对象,用于客户端给服务端发消息。

2,在onBind()方法中利用上步创建的Messenger对象创建IBinder接口对象,并作为onBind()方法的放回值传给客户端

3.在配置文件中注册服务,同时要注册一个过滤器。

4.创建客户端进程,在客户端创建实现ServiceConnection接口的子类,实现该接口的两个方法,在onServiceConnected(ComponentName arg0, IBinder arg1) {}方法中,利用服务端传过来的IBinder接口对象参数创建Messager对象,用来客户端发消息。

     至此,实现了客户端向服务端发送Message的单向通信。

5,如需要双向通信,在client端创建自己的Handler对象,利用该对象再创建client的Messenger对象。

6. client端send Message的时候,将上步创建的Messenger对象赋给Message的replyTo字段;

7. Service端处理消息的时候,获得封装在message中的client端Messenger,利用该Messenger对象,服务端就可以给客服端发message

 

上一篇: 程序员如何写出杀手级的简历! 下一篇: 没有下一篇了!
发表评论
用户名: 匿名