Service的onRebind(Intent intent)的调用时机

本文详细介绍了Android Service中onRebind方法的调用条件,即在onUnbind返回true后,当已有客户端重新连接服务时。文章通过模拟启动、绑定、解除绑定及再次绑定服务的流程,解释了onRebind为何会在第二次绑定时被调用,同时指出在该情况下onBind不会再次执行。为深入理解Service生命周期提供了帮助。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

官方解释如下:

Called when new clients have connected to the service, after it had previously been notified that all
had disconnected in its onUnbind. This will only be called if the implementation of onUnbind was overridden
to return true.

Service中onRebind方法被调用的两个必要条件

(1)服务中onUnBind方法返回值为true
(2)服务对象被解绑后没有被销毁,之后再次被绑定

模拟调用流程:

  1. 先启动服务(onCreate, onStartCommand);
03-08 16:46:06.992 24411-24411/com.lsw.demo I/MyService: onCreate: 
03-08 16:46:07.027 24411-24411/com.lsw.demo I/MyService: onStartCommand: 
  1. 再绑定服务(onBind);
03-08 16:46:10.771 24411-24411/com.lsw.demo I/MyService: onBind: 
  1. 再解除绑定服务(onUnBind)(由于服务被启动过,所以Service中onDestroy不会被调用);
03-08 16:56:45.922 24411-24411/com.lsw.demo I/MyService: onUnbind: 
  1. 再绑定服务;
03-08 16:57:05.040 24411-24411/com.lsw.demo I/MyService: onRebind: 

这次绑定的服务对象是之前已经创建好的,所以这次绑定服务时就会调用onReBind方法了,并且本次不会调用onBind方法。

相关代码见如下网站:
link

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值