知识点:
- service的生命周期
- 应用场景
1. service的生命周期
(1).startService执行的生命周期是 :onCreate→onStartCommand→onDestroy
多次执行startService 只会回调onStartCommand
(2).bindService执行的生命周期是:onCreate→onBind→onUnbind→onDestroy
如果在onBind中范围了对应的binde,则会执行对应ServiceConnection中的onServiceConnected(),但是onServiceDisconnected() 在连接正常关闭的情况下是不会被调用的, 该方法只在Service 被破坏了或者被杀死的时候调用. 例如, 系统资源不足, 要关闭一些Services, 刚好连接绑定的 Service 是被关闭者之一, 这个时候onServiceDisconnected() 就会被调用。
(ps:bindservice的启动还要根据第三个参数来判断,这里采用默认值)
(3) . 先startService后bindService 的生命周期是 :onCreate→onStartCommand→onBind→onUnbind→onDestroy
先bindService 后startService的生命周期是 :
onCreate→onBind→onStartCommand→onUnbind→onDestroy
(ps:这里要注意stopService和unbindService,如果stop了,则一定会执行onUnbind→onDestory,但是如果只是unbind,则只会执行onUnbind,这里是混合使用的关键点)
2. 应用场景
(1). startService,该类型一般只用来把一些与前台无关的工作放到后台中,前台不在意这些工作,但是应用退出不会自动销毁服务
(2). bindService,该类型一般是前台把一些比较耗时或者需要一直工作并且需要反馈信息给回前台的时候使用,比如后台播放,但是前台需要知道进度,不过应用退出也自动销毁服务
(3). startService和bindService混合使用,该类型一般是需要把后台任务信息反馈给前台,并且退出应用也不关闭后台服务,就是则行了startService和bindService之后,在退出应用只做unBindService不做stopSerivice的时候,比如后台下载任务
总结
启动service的知识是比较基础的,但是service是现在基本每个软件都会用,熟悉启动的方式有助于我们了解项目的运行。虽然这次是比较基础的知识,但是基础打扎实了后面理解一下框架和原理会比较轻松,所以我打算慢慢的回顾以前学习过得知识,做好总结,一步步向前
网友评论