Service 的生命周期

Service 的生命周期回调主要有这些,onCreate、onStartCommand、onDestroy、onBind、onUnbind、onRebind。

根据启动方式的不同,回调又会有不同的顺序,下面列举一下各种情况下,回调的顺序:

单种方式启动分两种情况:

  1. 使用 startService 启动 Service。

其生命周期为:onCreate -> onStartCommand -> onDestroy

第一次调用 startService 方法会先回调 onCreate,接着回调 onStartCommand。之后再调用 startService 时,不会再回调 onCreate,只会回调 onStartCommand。

当调用 stopService 或 Service 内部调用 stopSelf 方法时,Service 会停止运行并销毁,此时回调 onDestroy。

  1. 使用 bindService 启动 Service

其生命周期为:onCreate -> onBind -> onUnbind -> onDestroy

第一次调用 bindService 时会先回调 onCreate,再回调 onBind。之后再次调用 bindService,两个方法都不会再次回调。

当调用 unbindService 方法时,会先回调 onUnbind,再回调 onDestroy。

两种方式混合又分两种情况:

  1. 先 startService,再 bindService。回调 onCreate -> onStartCommand -> onBind

此时如果先调用 unbindService,只会回调 onUnbind。再调用 stopService,才会回调 onDestroy。

如果先调用 stopService,不会回调任何方法,再调用 unbindService,将会先后回调 onUnbind 和 onDestroy。

另外,如果在 onUnbind 方法返回 true,且调用 unbindService,但不调用 stopService。那么这时再次调用 bindService 的话,不会回调 onBind,而是回调 onRebind 方法。

  1. 先 bindService,再 startService。回调:onCreate -> onBind -> onStartCommand

之后调用 unbindService 和 stopService后,生命周期的回调和上面第一种情况一样。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值