扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
通过startService开启的服务,当访问者关闭时,服务仍然存在;访问者需要与服务进行通信,则我们需要将访问者与服务进行绑定;
创新互联专注为客户提供全方位的互联网综合服务,包含不限于网站设计、成都网站制作、天坛街道网络推广、小程序开发、天坛街道网络营销、天坛街道企业策划、天坛街道品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联为所有大学生创业者提供天坛街道建站搭建服务,24小时服务热线:13518219792,官方网址:www.cdcxhl.com
如果使用Context.bindService()方法启动服务,则在服务未创建时,系统会调用服务的onCreate()方法,接着调用onBind()方法,这时就访问者与服务已经绑定了,主程序销毁时服务也会终止。
1)绑定服务时,会自动创建服务。
2)如果创建后并启动后再绑定,不会重新创建,一个Service只有一个实例
3)同时启动和绑定服务时,解除绑定服务,但不会销毁关闭服务的,必须解除绑定并停止服务。
4)通过StartService启动服务,当前Activity销毁,服务不会停止,通过BindService启动服务,当前Activity销毁,服务停止。
绑定与解绑定服务
(1)Context.bindService(Intent service,ServiceConnectionconn,BIND_AUTO_CREATE);//绑定服务
(2)Context.unbindService(ServiceConnectionconn);
ServiceConnection
ServiceConnection为一个接口,用于绑定和解绑定IBinder,因此需要创建一个类实现它;
class XxxServiceConnectionimplements ServiceConnection{
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
//service为在onBind返回的IBinder
//绑定Binder对象
}
@Override
public void onServiceDisconnected(ComponentName name) {
//解绑定Binder对象
}
}
Service类
class XxxService extendsService{
private IBinder binder = new
XxxBinder();
public IBinder onBind(Intent intent){
return binder;
}
public int fun(int a){
//服务提供的方法,但是不能直接调用
...
}
private class XxxBinderextends Binder implements IXxxBinder{
//面向接口编程
public return fun1(int a){
//对外暴露的API
return fun(a);
//内部调用Service的方法
}
}
}
案例:绑定服务
主要功能:Service实现不断输出1、2、3……的服务功能,Activity调用Service的公开方法,调出当时的一个值。继续上次服务的案例,增加绑定等功能。
打开activity_main.xml,添加两个命令按钮,绑定服务和解除绑定:
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
Copyright © 2002-2023 www.kswjz.com 快上网建站品牌 QQ:244261566 版权所有 备案号:蜀ICP备19037934号
微信二维码
移动版官网