外观
Display、Task 与 User 为什么需要分别建模?
标准回答
Display 描述画面输出目标,Task 组织 Activity 历史,User 影响账户、应用数据和权限身份。这些对象可以关联,但没有一一对应关系。一个用户可以使用多个显示器,一个显示器也可能在系统策略下承载不同任务。
跨屏时至少核对源与目标 displayId、taskId、userId、调用 UID、目标应用实例和业务会话 ID。只比较包名会漏掉多任务和多用户差异;只比较 displayId 会漏掉同屏任务切换。
在单用户空间适配中,原先依赖用户隔离形成的业务边界可能需要显式重建,例如会话归属、数据订阅、回调路由和缓存键。这里是迁移分析方法,现有案例材料不足以确定某次迁移的具体根因或最终实现。
追问与回答
一个屏幕变成黑屏,先检查哪个 ID
先锁定发生时间与实际显示目标,再关联任务、窗口、Surface 和会话。没有单一 ID 能解释整条链路。
系统 APK 是否拥有任意跨用户能力
不能这样推导。签名权限、特权白名单、服务端检查及厂商策略共同决定能力,必须按目标系统核对。
易混淆点
- 把用户空间迁移简单理解为修改 displayId。
参考资料
内容来源
- Android 与 AI 工程 Wiki · 原条目
q109