说明:
首先要注意的是 Service是没有OnStop方法的,我们在使用Service的时候可以使用startService和bindService两种方式或者同时用这两种方式。
下面我们分别介绍下两种方式下service的生命周期是如何的。
一、
通过startService启动Service 的方式
生命周期为图中的左边所展示的样子。通过startService启动的service是运行在后台的,即使启动它的Activity销毁了,这个Service依然是存在运行的。
如果我们Service已经启动,那么当我们再次startService的时候,不会执行onCreate,而是执行onStartComment方法。
当我们调用StopService后,Service便会执行OnDestroy方法销毁。
二、
通过bindSerVice启动Service的方式
生命周期为途中右边所展示的样子,通过bindService启动的Service是与启动这个Activity是相绑定的,即使Activity中没有unBind方法,那么当Activity销毁时Service也会调用unBind方法,之后是调用Service的OnDestroy方法。
如果我们bindService之后,那么当我再次调用bindService的时候,是不执行任何方法的,但是当退出的时候会抛出以下异常,
但是当我们调用unBind之后,Service就会执行unBind和onDestroy,当我们在调用bindService后就可以重新bind了。
三、
如果我们用这两种方式的话。
首先调用StartService方法启动Service,在通过bindService方法绑定Service。
如果我们调用unBind方法后,Service调用unBind方法,但是不会调用OnDestroy方法。
但是当我再次调用bindService的时候是绑定不上的,此时Service中的unBind方法返回的是false
当我们把Service中的unBind方法返回ture的话,那么当我们调用完unBind方法后,再次调用bindService的时候,Service的onBind方法不会被调用,而是reBind方法会执行。