Android_Service与Activity的通信
2017-07-26 16:08
204 查看
Service与Activity之间的通信,就是这两个对象之间的数据交互
Activity将数据传到Service中,通过Intent进行传参
Service将数据传到Activity中,就得需要绑定
简单的用语言描述:就是Activity向指定的Service发出绑定请求;Service接收到请求,并进行了绑定,然后将成功绑定的信息返回给Activity;Activity接收成功绑定的信息。
这里主要说一下绑定的步骤:
(1)在Activity中向Service发起绑定
第一步:创建一个Intent对象
第二步:在本类中调用bindService方法发起绑定,方法中传入
三个参数.第一个参数是Intent对象;第二个参数是一个ServiConnection对象,需要在声明并进行实例化
![](https://img-blog.csdn.net/20170726160136644?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaXRzenQ4ODg=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
覆写两个方法:
红线标注的方法:表示成功绑定后执行的方法,第二个参数,也就是IBinder类型的service,表示成功绑定的Service对象。也就是说,这个对象是成功绑定的Service对象回传回来的。
紫线标注的方法:表示解除绑定时执行的方法。什么时候会解除绑定呢?也就是Activity被系统杀死后,自动解绑。
(2)Service接收到请求,并进行了绑定,然后将成功绑定的信息返回给Activity。
如图
![](https://img-blog.csdn.net/20170726160205670?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaXRzenQ4ODg=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
继承了Service的类,会实现红线标注的方法。而这个方法就是绑定成功,并将成功信息返回给请求绑定的Activity的方法。
图中关于IBinder和Binder这两个名词很陌生,但是这两个这两个名词很重要,也很深奥,网上有有大神的文章,需要仔细研读。
http://blog.csdn.net/boyupeng/article/details/47011383
这里只简单的介绍一下
1. 直观来说,Binder是Android中的一个类,它继承了IBinder接口
2. 从Android应用层来说,Binder是客户端和服务端进行通信的媒介,当你bindService(绑定服务)的时候,服务端会返回一个包含了服务端业务调用的 Binder对象,通过这个Binder对象,客户端就可以获取服务端提供的服务或者数据,这里的服务包括普通服务和基于AIDL的服务。
总的来说就是,Binder是进程通信的通道,姑且先这么理解吧。
接着说上面的图,因为Service和Activity之间需要通信,所以需要一个Binder类,所以创建了MyBinder,继承了Binder类,MyBinder携带一个参数,主要就是给Activity带过去需要用到的数据。
(3)这一步在(1)有说明,把(1)看懂了,(3)就懂了
Activity将数据传到Service中,通过Intent进行传参
Service将数据传到Activity中,就得需要绑定
简单的用语言描述:就是Activity向指定的Service发出绑定请求;Service接收到请求,并进行了绑定,然后将成功绑定的信息返回给Activity;Activity接收成功绑定的信息。
这里主要说一下绑定的步骤:
(1)在Activity中向Service发起绑定
第一步:创建一个Intent对象
第二步:在本类中调用bindService方法发起绑定,方法中传入
三个参数.第一个参数是Intent对象;第二个参数是一个ServiConnection对象,需要在声明并进行实例化
覆写两个方法:
红线标注的方法:表示成功绑定后执行的方法,第二个参数,也就是IBinder类型的service,表示成功绑定的Service对象。也就是说,这个对象是成功绑定的Service对象回传回来的。
紫线标注的方法:表示解除绑定时执行的方法。什么时候会解除绑定呢?也就是Activity被系统杀死后,自动解绑。
(2)Service接收到请求,并进行了绑定,然后将成功绑定的信息返回给Activity。
如图
继承了Service的类,会实现红线标注的方法。而这个方法就是绑定成功,并将成功信息返回给请求绑定的Activity的方法。
图中关于IBinder和Binder这两个名词很陌生,但是这两个这两个名词很重要,也很深奥,网上有有大神的文章,需要仔细研读。
http://blog.csdn.net/boyupeng/article/details/47011383
这里只简单的介绍一下
1. 直观来说,Binder是Android中的一个类,它继承了IBinder接口
2. 从Android应用层来说,Binder是客户端和服务端进行通信的媒介,当你bindService(绑定服务)的时候,服务端会返回一个包含了服务端业务调用的 Binder对象,通过这个Binder对象,客户端就可以获取服务端提供的服务或者数据,这里的服务包括普通服务和基于AIDL的服务。
总的来说就是,Binder是进程通信的通道,姑且先这么理解吧。
接着说上面的图,因为Service和Activity之间需要通信,所以需要一个Binder类,所以创建了MyBinder,继承了Binder类,MyBinder携带一个参数,主要就是给Activity带过去需要用到的数据。
(3)这一步在(1)有说明,把(1)看懂了,(3)就懂了
相关文章推荐
- android 的Activity和Service之间的通信
- Android Service与Activity之间通信的几种方式
- Android笔记(一):Activity绑定Service,并访问通信
- Android Service与Activity之间通信的几种方式
- android中activity与service的双向通信
- Android Service与Activity之间通信的几种方式
- Android中Activity、Service和线程之间的通信
- Android中Activity、Service和线程之间的通信
- Android之Activity与Service通信
- Android Service和Activity基于串口蓝牙模块的双向通信
- Android中Service和Activity相互通信示例代码
- Android Service与Activity之间通信的几种方式
- Android Service与Activity之间通信的几种方式
- Android中Service与Activity之间通信的几种方式
- Android学习之Activity与Service进行通信的三种方式
- android service与activity进行通信
- Android基础--Service与Activity之间通信的几种方式
- Android Activity与远程Service的通信学习总结
- Android Service与Activity之间通信的几种方式
- Android Service 与 Activity 通信方法