请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

IntentBindRecord有关的疑惑

(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。

0 回复 有任何疑惑可以回复我~
  • 提问者 oRo #1
    我好奇的是,两个不同的app应用,为什么会用到同一个intent呢?能给我讲讲这个intent的由来吗?
    回复 有任何疑惑可以回复我~ 2021-10-14 15:53:14
  • 提问者 oRo #2
    疑问1:一般情况下,不同的应用进程,bindservice用到的intent都是不一样的啊,这样一来,intent不是应该归属app应用更好吗,为什么是intent包含多个不同的app?
    回复 有任何疑惑可以回复我~ 2021-10-14 16:13:31
  • 风语 回复 提问者 oRo #3
    intent是意图,比如打开相册选择照片,打开浏览器,多个app可以有相同的意图。
    回复 有任何疑惑可以回复我~ 2021-11-09 01:33:23

相似问题

登录后可查看更多问答,登录/注册

问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信