android service生命周期

说明:

首先要注意的是 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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值