文档章节

bindService的小结

p
 passengers
发布于 2017/07/07 16:29
字数 392
阅读 2
收藏 0

服务

 

StartService 和 BindService的区别:

 

StartService是和调用者(Activity)没有联系,即调用者退出,服务依然可以在后台运行。

生命周期:onCreate()-  >onStartCommand()->startService()->onDestroy()

 

BindService是和调用者(Activity)有联系,一旦调用者退出,服务也会被停止。

生命周期:onCreate()->onBind()->onUnbind()->onDestroy()

 

BindService的使用

绑定一个服务:

Intent intent = new Intent(this, BluetoothScanService.class);
bindService(intent,
conn, Context.BIND_AUTO_CREATE);

参数

conn 实现ServiceConnection类

Context.BIND_AUTO_CREATE 是否自动启动服务,默认的是这个

 

private ServiceConnection conn = new ServiceConnection() {
//当调用这个方法时说明服务已经绑定连接了

    @Override

    public void onServiceConnected(ComponentName componentName, IBinder iBinder) {

        BluetoothScanService.BindService bindService = (BluetoothScanService.BindService) iBinder;

        BluetoothScanService service = bindService.getService();
         service.abc();//可以在这里调用服务里的方法了



    }
//当系统与service的连接意外丢失时调用此方法(如service崩溃了或被强杀了)

    @Override

    public void onServiceDisconnected(ComponentName componentName) {



    }

};

 

服务解绑:

unbindService(conn); //虽然说当调用者退出后,服务也会关闭,但我们还需要手动去解绑,否则就会报异常

 

都是需要去实现ServiceConnection类的

 

附,服务类的代码:

public class BluetoothScanService extends Service {



    @Override

    public void onCreate() {

        super.onCreate();

    }



    @Override

    public int onStartCommand(Intent intent, int flags, int startId) {

        scan();

        return super.onStartCommand(intent, flags, startId);

    }



    @Override

    public void onDestroy() {

        super.onDestroy();

    }



    @Nullable

    @Override

    public IBinder onBind(Intent intent) {

//        scan();

        return bindService;

    }
 
//创建BindService类,通过BindService类来操作服务里的方法

    private BindService bindService = new BindService();



    public class BindService extends Binder {



        public BluetoothScanService getService() {

            return BluetoothScanService.this;

        }

    }1)
//注:如果使用的是startService,那么就需要在onStartCommand()方法里执行

//如果使用的是bindService,那么就需要在onBind()方法里执行

    private void scan() {

              //在服务里要做的事
    }
}

 

© 著作权归作者所有

共有 人打赏支持
p
粉丝 0
博文 7
码字总数 2822
作品 0
长沙
私信 提问
Android中bindService的使用方法

bindService用于绑定一个服务。这样当bindService(intent,conn,flags)后,就会绑定一个服务。这样做可以获得这个服务对象本身,而用startService(intent)的方法只能启动服务。 bindService方...

liuchuanf
2013/01/06
0
0
android服务类 Service

当只使用startService()来启动服务 startService可以多次调用,stopService()也可以多次调用。 总结:::startService第一次调用的时候,Service的生命周期方法 onCreate()---->onStartComm...

一个游戏8
2015/12/28
0
0
Android中BindService方式使用的理解

最近学习了一下Android里面的Service的应用,在BindService部分小卡了一下,主要是开始没有彻底理解为什么要这么实现。 BindService和Started Service都是Service,有什么地方不一样呢: 1....

大凉龙雀
2013/03/02
0
0
Android中BindService方式使用的理解

最近学习了一下Android里面的Service的应用,在BindService部分小卡了一下,主要是开始没有彻底理解为什么要这么实现。 BindService和Started Service都是Service,有什么地方不一样呢: 1....

大凉龙雀
2013/04/04
0
0
服务的生命周期回调方法

与采用Context.startService()方法启动服务有关的生命周期方法 onCreate()à onStart() à onDestroy() onCreate()该方法在服务被创建时调用,该方法只会被调用一次,无论调用多少次startSe...

长平狐
2012/10/09
38
0

没有更多内容

加载失败,请刷新页面

加载更多

颜色模型与颜色应用---光的特性

电磁频谱 颜色的心理学特征

中国龙-扬科
19分钟前
2
0
android音频及强噪相关

Android AudioRecord和AudioTrack介绍(Android音频收集和播放 麦克风降噪) https://blog.csdn.net/tanningzhong/article/details/72844559 音频采集(AudioRecorder) https://www.jianshu.......

whoisliang
25分钟前
2
0
redis-持久化

RDB rdb持久化是把当前进程数据生成快照保存到磁盘的过程。触发RDB持久化过程分为手动触发和自动触发。 触发机制 bgsave执行流程 rdb优缺点 AOF 记录每次写命令,重启时再重新执行aof文件中的...

grace_233
30分钟前
3
0
电话激活Windows 中文操作系统步骤

已购买微软MAK批量授权,系统又在企业内网中,无法通过连接Internet进行激活,还可以通过电话完成激活。 前期准备 请提前准备好产品密钥,Product Key格式如下:XXXXX-XXXXX-XXXXX-XXXXX-XXX...

tonyfox
32分钟前
4
0
Apache用户认证,域名跳转,访问日志

Apache用户认证 当设置了用户认证后,用户访问网站时,需要输入用户名和密码才能访问。 可以全局设置,也可以为某几个虚拟主机单独配置。 下面以全局配置进行操作示例。 编辑httpd.conf进行配...

野雪球
37分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部