Android 服务(二)BindService
2015-11-11 23:58
274 查看
一 服务除了上一篇提到的方式,还有一种就是BindService,那么大家肯定有疑问了,为什么会采取BindService这种方式呢?
1、采用Bound Services方式,不仅可以启动服务,还可调用服务里面的方法;
2、但BindService方法不会引发OnStartCommand事件,故也无StartCommandResult可利用;绑定的意义在于服务方法的调用;
也就是说,当我们想调用服务里面的某一个方法时,就需要BindService这种形式了。
所以绑定服务的意义完全在于调用服务里面的方法。
二 服务的生命周期(从创建到销毁)有两条路径:
被启动的服务(startedservice)
当服务被一个组件通过startService()函数启动后,这个服务就会独立的运行,必须被自己用stopSelf()函数或者其他组件用stopService()函数来停止。一旦服务被停止,系统就会销毁它。
绑定的服务(bound service)
当一个服务被另一个组件通过bindService()函数创建后,客户就会通过IBinder接口和服务进行交互。客户可以通过unbindService()函数关闭连接(解除绑定 )。多个客户可以绑定到同一个服务,当所有客户都关闭和服务连接(解除绑定 )后,系统会销毁服务(服务没有必要自己停止自己)。
这两条路径并不是完全分离的。这是因为你可以绑定一个被启动的服务(started service)。例如,一个音乐播放服务可能被startService()函数启动来播放一首歌曲。过了一会儿,可能用户想要在播放器做一些操作或者获取关于当前歌曲的信息,一个activity就会通过bindService()函数绑定到该服务。started service + bindService 这种情况下,调用stopService()或 stopSelf() 不会真的停止服务,直到所有绑定的客户都解除绑定(关闭连接)。
1、采用Bound Services方式,不仅可以启动服务,还可调用服务里面的方法;
2、但BindService方法不会引发OnStartCommand事件,故也无StartCommandResult可利用;绑定的意义在于服务方法的调用;
也就是说,当我们想调用服务里面的某一个方法时,就需要BindService这种形式了。
所以绑定服务的意义完全在于调用服务里面的方法。
二 服务的生命周期(从创建到销毁)有两条路径:
被启动的服务(startedservice)
当服务被一个组件通过startService()函数启动后,这个服务就会独立的运行,必须被自己用stopSelf()函数或者其他组件用stopService()函数来停止。一旦服务被停止,系统就会销毁它。
绑定的服务(bound service)
当一个服务被另一个组件通过bindService()函数创建后,客户就会通过IBinder接口和服务进行交互。客户可以通过unbindService()函数关闭连接(解除绑定 )。多个客户可以绑定到同一个服务,当所有客户都关闭和服务连接(解除绑定 )后,系统会销毁服务(服务没有必要自己停止自己)。
这两条路径并不是完全分离的。这是因为你可以绑定一个被启动的服务(started service)。例如,一个音乐播放服务可能被startService()函数启动来播放一首歌曲。过了一会儿,可能用户想要在播放器做一些操作或者获取关于当前歌曲的信息,一个activity就会通过bindService()函数绑定到该服务。started service + bindService 这种情况下,调用stopService()或 stopSelf() 不会真的停止服务,直到所有绑定的客户都解除绑定(关闭连接)。
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories