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回答

风语

2020-02-01


1) received字段是同一个,这个received字段是IntentBindRecord里面的,表示是否收到service的binder对象。在bindServiceLocked里面b是指AppBindRecord,在publishServiceLocked里面b是指IntentBindRecord,别搞混了。这里给这个标志放到IntentBindRecord里面,我猜想应该是service对于不同的intent可能有不同的binder对象。


2)比如说现在有两个App,都要bind到一个第三方的服务进程,他们都是用的相同的Intent,但是因为来自于不同的App进程,为了区分这种情况,所以就分为两个AppBindRecord。

0
3
风语
回复
oRo
intent是意图,比如打开相册选择照片,打开浏览器,多个app可以有相同的意图。
2021-11-09
共3条回复

剖析Framework面试 冲击Android高级职位

一手助力冲刺Android高级职位,一手把握系统底层原理,理清面试思路,提升技术段位

1406 学习 · 187 问题

查看课程