android service生命周期

来源:互联网 发布:网络最火的直播软件 编辑:程序博客网 时间:2024/06/06 01:31

说明:

首先要注意的是 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方法会执行。



0 0
原创粉丝点击