android 四大组件值Service(3) 绑定式服务
2016-06-25 08:55
387 查看
bound服务是指允许被应用程序组件绑定的服务,通过调用bindService()可以完成绑定, 用于创建一个长期存在的连接(并且一般不再允许组件通过调用startService()来start服务。 当应用程序中的activity或其它组件需要与服务进行交互,或者应用程序的某些功能需要暴露给其它应用程序时, 你应该创建一个bound服务,并通过进程间通信(IPC)来完成。 要创建一个bound服务,你必须实现onBind()回调方法,并返回一个IBinder对象, 此对象定义了与服务进行通信的接口。 然后,其它应用程序组件可以调用bindService()来获得接口 并调用服务中的方法。 服务只在为绑定的应用程序组件工作时才会存活,因此,只要没有组件绑定到服务, 系统就会自动销毁服务(你不需要像started服务中那样通过onStartCommand()来终止一个bound服务)。 要创建一个bound服务,首先必须定义好接口,用于指明客户端如何与服务进行通信。 这个客户端与服务之间的接口必须是一个IBinder对象的实现,并且你的服务必须在onBind() 回调方法中返回这个对象。一旦客户端接收到这个IBinder,它就可以通过这个接口来与服务进行交互。 同一个服务可以被多个客户端绑定。当客户端完成交互时,会调用unbindService()来解除绑定。 一旦不存在客户端与服务绑定时,系统就会销毁该服务。 实现bound服务的方式可以有很多种,实现的过程也比started类型的服务更为复杂, 因此bound服务将在单独的bound服务文档中讨论。 Binder: Base class for a remotable object, the core part of a lightweight remote procedure call mechanism defined by [code]IBinder Binder是一个远程对象的基类,是轻量级远程进程调用机制IBinder的子类 所以进行数据通行使用Binder
[/code]
相关文章推荐
- 检测字符串 字母数字中文
- Android 批量添加联系人
- Android IntentUtil跳转工具类
- 浅谈Android中的异步加载之ListView中图片的缓存及优化三
- Android中绘制2D图形基础
- "AsynchTask和Handler"的区别与用法-Android异步消息处理机制之图文代码详解
- Android的硬编码国际化
- Android下打印调试堆栈方法
- Android之 drawTextOnpath
- Android自定义Dialog动画入场
- Android support library支持包常用控件介绍(一)
- Activity中configChanges属性的用法
- ListView滑动不爽,滚动一页得滑几次?该用分页列表啦!
- Android Studio 小技巧(1):如何导入AAR文件
- Android Studio 小技巧(1):如何导入AAR文件
- android监听软键盘回车键并且解决默认点击两次的问题
- Android Studio com.android.dex.DexException: Multiple dex files define(重复引用包)
- Android之Widget
- Android启动另一个Activity时无法执行语句解决办法之加载延迟
- Unknown host 'downloads.gradle.org'