service生命周期被分为四部分,分别是被启动服务的生命周期、被绑定服务的生命周期、被启动又被绑定服务的生命周期以及当服务停止时清除服务。
service 生命周期
与activity类似,service也有自己的生命周期函数,在不同的时刻,系统会调用对应的service生命周期函数,不过与activity声明周期相比,service的声明周期更加简单。
(1)被启动的服务的生命周期
如果一个service被某个activity 调用 context.startservice 方法启动,那么不管是否有activity使用bindservice绑定或unbindservice解除绑定到该service,该service都在后台运行。如果个service被startservice 方法多次启动,那么oncreate方法只会调用一次,onstart将会被调用多次(对应调用startservice的次数),并且系统只会创建service的一个实例。该service将会一直在后台运行,而不管对应程序的activity是否在运行,直到被调用stopservice,或自身的stopself方法。当然如果系统资源不足,android系统也可能结束服务。
(2)被绑定的服务的生命周期
如果一个service被某个activity 调用 context.bindservice 方法绑定启动,不管调用 bindservice 调用几次,oncreate方法都只会调用一次,同时onstart方法始终不会被调用。当连接建立之后,service将会一直运行,除非调用context.unbindservice 断开连接或者之前调用bindservice 的 context 不存在了(如activity被finish的时候),系统将会自动停止service,对应ondestroy将被调用。
(3)被启动又被绑定的服务的生命周期
如果一个service又被启动又被绑定,则该service将会一直在后台运行。并且不管如何调用,oncreate始终只会调用一次,对应startservice调用多少次,service的onstart便会调用多少次。调用unbindservice将不会停止service,而必须调用 stopservice 或 service的 stopself 来停止服务。
(4)当服务被停止时清除服务
当一个service被终止(1、调用stopservice;2、调用stopself;3、不再有绑定的连接(没有被启动))时,ondestroy方法将会被调用,在这里你应当做一些清除工作,如停止在service中创建并运行的线程。
以上就是service生命周期是什么的详细内容。