android serviceconnection unbind流程,Android unbindService 流程分析

基于Android 6.0的源码剖析, 分析bind service的启动流程。

/frameworks/base/core/java/android/app/ContextImpl.java

/frameworks/base/core/java/android/app/LoadedApk.java

/frameworks/base/core/java/android/app/IServiceConnection.aidl(自动生成Binder两端)

一. unbind

文章bindService启动过程分析,介绍了 bindService 的过程,本文介绍其对应的另一个操作 unbind。

unbind调用链:

AMP.unbindService

AMS.unbindService

AS.unbindServiceLocked

AS.removeConnectionLocked

ATP.scheduleUnbindService

AT.scheduleUnbindService

AT.handleUnbindService

Service.onUnbind

AS.bringDownServiceIfNeededLocked

AS.bringDownServiceLocked

ATP.scheduleUnbindService

AT.scheduleUnbindService

ATP.scheduleStopService

AT.scheduleStopService

1.1 AMP.unbindService

... //省略,未完待续

二. onServiceDisconnected

当service所在进程死亡后,binderDied死亡回调后触发的。

2.1 binderDied

[-> LoadedApk.ServiceDispatcher.DeathMonitor]

private final class DeathMonitor implements IBinder.DeathRecipient

{

DeathMonitor(ComponentName name, IBinder service) {

mName = name;

mService = service;

}

public void binderDied() {

death(mName, mService); //【见流程2.2】

}

final ComponentName mName;

final IBinder mService;

}

2.2 death

[-> LoadedApk.ServiceDispatcher]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值