IntentBindRecord有关的疑惑
来源:5-3 说说service的绑定原理-2
oRo
2020-01-16
(1)不太能明白你开头提到的ServiceRecord->IntentBindRecord->AppBindRecord的数据结构。
你在绑定原理-2 中publicServiceLocked的时候提到的b.received=true与绑定原理-1中bindServiceLocked的时候提到的b.intent.received是同一个吗?
如果是同一个,publicServiceLocked的时候,你提到了b.received=true,而这个b是一个IntentBindRecord,不应该作为一个Service发布的标志,而应该是ServiceRecord去做这件事吧。还是说这里我们要记录谁是第一个绑定Service的,并且作为Service发布的标志呢?
如果不是同一个,那bindServiceLocked的时候提到的b.intent.received是哪里赋予的?
(2)一个IntentBindRecord有一个或多个AppBindRecord,你说多个应用进程,但我不太明白你说的意思,能举出一个具体的实例说说看吗?
1回答
-
1) received字段是同一个,这个received字段是IntentBindRecord里面的,表示是否收到service的binder对象。在bindServiceLocked里面b是指AppBindRecord,在publishServiceLocked里面b是指IntentBindRecord,别搞混了。这里给这个标志放到IntentBindRecord里面,我猜想应该是service对于不同的intent可能有不同的binder对象。
2)比如说现在有两个App,都要bind到一个第三方的服务进程,他们都是用的相同的Intent,但是因为来自于不同的App进程,为了区分这种情况,所以就分为两个AppBindRecord。
032021-11-09
相似问题