service讲解
是一个没有界面的活动,但是和activity差不多
- service是一个抽象类
- onBind是必须要实现的方法,该方法返回一个Ibander类型,是activity和service交互的同道
Service的两种启动方式
1.startservice使用这种方式启动的service跟启动这个service的组件没有直接联系,互相不影响各自的生命周期
2.stopService 关闭使用startservice方式开启的服务
3 第二中启动方式
采用bindService使用绑定的方式启动,让组件和service进行一个关联,service的生命周期会跟随启动它的组件的生命周期结束而结束,但是启动它的组件的声明跟这个service没关系
onBindService
解除绑定service在解除使用绑定方式启动的service后,会被销毁
service的生命周期
- 1.通过startservice和stopservice执行的生命周期
- 2.通过bindService启动service再去调用unbindService
- onCreeate—onBind—-unOnBind—–onDestroy
- 3.先启动,在绑定,在解绑,在停止
- onCreate–onStartCommand–onBind–onUnBind–onDestory
- 4先绑定,再启动,解绑,停止.
onCreate–onBind–onStartCommand–onUnBind–onDestory
通过绑定的方式,组件和service通信的流程
1.创建一个ServiceConnection
- 2.bindService方法,让组件和service进行绑定
- 3.在service中创建一个内部类继承Binder
- 因为onBinder方法返回的类型是一个Ibinder
- 4.在Binder内部类中可以调\用service的方法和变量
- 5.service的onbind方法返回这个Binder对象
- 6.在绑定这个service的组件中serviceConnection里面有一个onServiceConnection的回调方法中可以拿到service传递过来的对象
- 7.在activity中定义一个Binder对象来接收传递过来的对向
- 从而实现service数据传递到组件中使用