当 AppX 调用 Service 然后调用 ServiceS 时,调用 Uid 是啥?
Posted
技术标签:
【中文标题】当 AppX 调用 Service 然后调用 ServiceS 时,调用 Uid 是啥?【英文标题】:What's the CallingUid when AppX calls ServiceY which then calls ServiceZ?当 AppX 调用 Service 然后调用 ServiceS 时,调用 Uid 是什么? 【发布时间】:2014-07-10 23:56:30 【问题描述】:来自 android API 文档:Binder.getCallingUid()
返回分配给向您发送当前正在处理的事务的进程的 Linux uid。当 AppX 调用 ServiceY 和 ServiceY 调用getCallingUid()
时,它会得到 X 的 UID。
我的问题是:当AppX调用ServiceY,ServiceY依次调用ServiceZ时,Z观察到的调用UID是什么?
如果 Y 和 Z 在同一个进程中会有所不同吗?
【问题讨论】:
【参考方案1】:如果App X调用Service Y,Service Y调用Service Z,当Service Z调用getCallingUid()
时,它会取回Service Y的UID。即使Y和Z在同一个进程中也是如此因为每个调用都被视为一个单独的 Binder 事务。
【讨论】:
我发现,如果 Y 和 Z 在同一个进程中,getCallingUid() 返回 X。Y 和 Z 之间的 Binder 调用变成了普通的本地函数调用。以上是关于当 AppX 调用 Service 然后调用 ServiceS 时,调用 Uid 是啥?的主要内容,如果未能解决你的问题,请参考以下文章
使用Messenger进行Activity与Service之间的相互通信
当Activity被销毁时,为什么Service会破坏自我?