android ApiDemo学习(一)service——4 Messenger Service

可参考文章:

http://blog.csdn.net/mapdigit/article/details/7706935

 

我的补充:

Service端:1 创建Handler处理client的请求——client的注册、注销、设置一个值

                          (1)创建一个Messenger类型的队列mClients,一个service可以对应多个客户端。

                          (2)每个mClients用于给对应的客户端发送消息

                          (3)mClients变量保存的是msg.replyTo,也就是客户端的用于接收信息的Messenger(下面Client端的3)。向客户端发送消息时,就使用这个mClient保存的 Messenger。

                      2  使用上面1的Handler创建Messenger,用于接收Client发送的消息,这些消息由1中的Handler处理

                      3  创建IBinder,讲IBinder返回给客户端

Client端:  1  使用Service端的3创建的IBinder创建Messenger,用于发送消息

                     2   创建Handler处理Service的请求——设置一个值

                     3   使用上面2的Handler创建Messenger,用于接收Service发送的消息

 

点击Bind按钮,步骤如下:

Client :进入onCreat函数,做bindService()函数来bind一个service

Service:onCreate

                 onBind,返回mMessenger.getBinder(),上面Service端的3. 可以输出这个IBinder的id号

Client:service和client连接上了,进入onServiceConnect()函数,得到一个service传过来的IBinder号,可以输出,发现和上一步的id号是一样的。

              在onServiceConnect中,使用service传过来的IBinder号创建一个Messenger,上面Client端的1,发送两个消息:注册和设置一个值,可以输出这个设置的值

Server:接收到发送来的两个消息。处理第二个消息时,再把接收到的值发送回去

Client:接收到发送来的消息。可以输出接收到的值,和设置并发送过去的值是一样的。

 

点击unBind按钮:

Client:doUnbindService函数中,给service发送注销的消息

Service:接收到消息,从队列中将这个client删除

service:进入onDestroy函数

 

点击返回键退出:

service:进入onDestroy函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值