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函数

你可能感兴趣的:(android,server,service)