Skip to content

PendingResultData · 广播结果 IPC 数据 ​

BroadcastReceiver.PendingResult 的可序列化快照,Parcelable。虚拟 App 收到有序广播后,把系统的 PendingResult 拆成纯数据跨进程传给 server 端 AMS,由 BroadcastSystem 统一管理广播生命周期。

真实字段 ​

从源码提取(全部为 public 字段):

字段类型含义
mTypeint广播类型(MNC 版本才有)
mOrderedHintboolean是否有序广播
mInitialStickyHintboolean初始 sticky 标记
mTokenIBinder广播 token(系统 AMS 识别用)
mSendingUserint发送方 userId
mFlagsint广播 flags
mResultCodeint结果码
mResultDataString结果数据
mResultExtrasBundle结果 extras
mAbortBroadcastboolean是否中止广播
mFinishedboolean是否已调 finish

版本兼容构造 ​

构造函数用 mirror 反射,按 API 级别选不同镜像类:

JBMR1 版本少 mType/mInitialStickyHint 两字段——这两个是 MNC 新增的。

使用方 ​

引用方用途
BroadcastSystemserver 端持有,调 finishResult 时回写系统 PendingResult
VActivityManagerService调度广播时构造
VActivityManager / VClientImplclient 端接收并还原为系统 PendingResult

广播结果跨进程流转 ​

广播的 setResultCode/setResultData/abortBroadcast 等调用在虚拟 App 进程内改的是 PendingResultData 的字段,最终由 BroadcastSystem 统一回写到系统 PendingResult——避免虚拟 App 直接持有系统 Binder。

详见 Activity Manager 与 IPC 桥。

基于 VirtualApp 与 epic,仅供学习研究。VirtualApp 禁止商用。