1.作用
长时间位于后台(无界面)完成用户指定操作
1.1两类状态
(a)started(启动):当应用程序组件(如activity)调用startService()方法启动服务时,服务处于started状态。
(b)bound(绑定):当应用程序组件调用bindService()方法绑定到服务时,服务处于bound状态。
2.生命周期
2.1 startService()和bindService()
startService()启动的service
activity销毁,仍可以保持运行
程序被杀,才关闭
bindService()启动的service
跟activity一起销毁
2.2 只用StartService()启动服务
2.3 只使用BindService绑定服务
2.4 绑定和启动先后设置
先启动后绑定,就等绑定完成,再 解绑、启动或启动、解绑
3.使用方式
3.1 AndroidManifest 注册
在Android.Manifest文件的 Application内,Activity外 注册如下
<service android:name=".Service实例化名称"/>
3.2 配置Service内部自动调用方法
//启动:
首次创建时的代码放进MyService中的onCreat()方法中
要执行的业务逻辑代码放进onStartCommand()方法里
//绑定:
新建一个内部类MyBinder继承Binder,内部执行业务代码
onBind()方法中返回MyBinder内部类的实例
3.3 Activity实例对象中实例化service
3.4 启动Service
//开启这个服务
val intent =Intent(TestActivity.this,MyService.class)
startService(intent)
//关闭这个服务
val intent =Intent(TestActivity.this,MyService.class)
stopService(intent)
3.4 绑定Service
创建一个匿名类new ServiceConnection(),并重写onServiceConnected(),onServiceDisconnected()方法,
在onServiceConnected()方法中先获取MyBinder的实例,然后调用MyBinder内部类中的业务代码,这个匿名类的返回值类型为ServiceConnection
变量serviceConnection传进bindService方法和unBindService方法中,实现绑定和解绑操作