一、绑定服务介绍
来源:互联网 发布:centos版本查看命令 编辑:程序博客网 时间:2024/06/10 06:37
一、绑定服务介绍
前面文章中讲过一般的通过startService开启的服务,当访问者关闭时,服务仍然存在;
但是如果存在这样一种情况:访问者需要与服务进行通信,则我们需要将访问者与服务进行绑定;
如果使用Context.bindService()方法启动服务,则在服务未创建时,系统会调用服务的onCreate()方法,接着调用onBind()方法,这时就访问者与服务已经绑定;
如果多次调用bindService()多次绑定服务,则不会有副作用(导致多次绑定);
绑定服务的运行流程如下图所示:
二、Bind Service 核心代码
绑定与解绑定服务
(1)Context.bindService(Intent service,ServiceConnection conn,BIND_AUTO_CREATE);//绑定服务
(2)Context.unbindService(ServiceConnection conn);//解除绑定服务
ServiceConnection
ServiceConnection为一个接口,用于绑定和解绑定IBinder,因此需要创建一个类实现它;
class XxxServiceConnection implements ServiceConnection{
@Override
public void onServiceConnected(ComponentName name, IBinder service) {//service为在onBind返回的IBinder
//绑定Binder对象
}
@Override
public void onServiceDisconnected(ComponentName name) {
//解绑定Binder对象
}
}
@Override
public void onServiceConnected(ComponentName name, IBinder service) {//service为在onBind返回的IBinder
//绑定Binder对象
}
@Override
public void onServiceDisconnected(ComponentName name) {
//解绑定Binder对象
}
}
Service类
class XxxService extends Service{
private IBinder binder = newXxxBinder();
public IBinder onBind(Intent intent){
return binder;
}
public int fun(int a){//服务提供的方法,但是不能直接调用
...
}
private class XxxBinder extends Binder implements IXxxBinder{//面向接口编程
public return fun1(int a){//对外暴露的API
return fun(a);//内部调用Service的方法
}
}
}
三、BindService案例
场景:服务提供了加法运算的接口,Activity需要调用服务提供的加法运算方法,并返回结果;
效果说明:
MainActivity.java
AddOpService.java
IAddOpService.java
0 0
- 一、绑定服务介绍
- Android绑定服务(一):基础知识
- 绑定服务
- 绑定服务
- 绑定服务
- 绑定服务
- 绑定服务
- 绑定服务
- 绑定服务&绑定远程服务
- XML-RPC Web服务协议介绍[一]
- OpenStack Heat服务介绍 (一)
- Zookeeper服务框架之介绍篇(一)
- 绑定未绑定的服务
- Android 绑定类型服务---绑定服务
- Android 绑定类型服务---绑定服务
- Android 绑定类型服务---绑定服务
- 开启服务和绑定服务
- 服务之非绑定服务
- c语言指向结构体数组的指针
- 不敢死队问题
- 用swift写一个悬浮的searchbar
- Spring SpEL 中的EvaluationContext 及Root
- poj入门水题整理7
- 一、绑定服务介绍
- Coding:简单介绍视音频采样和量化01.
- jquery中html、val与text三者属性取值的联系与区别介绍
- 一、AIDL介绍
- spring四种依赖注入方式
- VS2013中使用fopen,fscanf出现安全性问题
- JSON数据详细的学习
- Centos 6.5下安装配置tomcat
- tomcat远程地址或主机名过滤器