绑定服务的生命周期
- 绑定的方式开启服务,如果服务不存在,先执行onCreate在执行onbind
- 服务的onstart和onstartcommand方法不会被执行
- 解除绑定服务,先执行onunbind在执行ondetroy
- 多次绑定服务,服务只会被创建一次,oncreate方法只会被执行一次
- 多次绑定服务,onBind方法不会被重复调用
- 在实际开发的时候,如果需要调用服务的方法,就绑定服务,只能绑定一次
- 服务只可以被解绑一次,如果用同一个conn对象多次解绑,服务和抛出异常
两种开启服务方式比较
start的方式开启服务器
服务一旦开启,长期后台运行,服务和开启者(Activity)没有任何的关系,开启者退出了,服务还是继续在后台长期运行,开启者(Activity)不可以调用服务里面的方法,在系统设置界面可以观察到
bind的方式开启服务
不求同时生,但求同时死,如果开启者(Activity)退出了,服务也会跟者挂掉,
开启者(Activity)可以间接的利用中间人调用服务里面的方法.在系统设置界面看不到的
服务如果被开启同时被绑定,服务就停不掉了.必须解除绑定才可以停止服务
混合调用服务的生命周期
- 为了保证服务又能长期后台运行,又能调用到服务里面的方法
- 采用混合的方式开启服务
按照步骤编写代码:
- start的方式开启服务(保证服务长期后台运行)
- bind的方式绑定服务(调用服务的方法)
- unbind的方式解除绑定服务
- stop的方式停止服务