先把结论放在前面:Compose 与 View 的互操作不是"能不能塞进去"的问题,而是"谁持有生命周期、谁持有状态、谁负责刷新"这三个所有权问题。官方给的答案是AndroidView与ComposeView两个入口,桥接层负责把两套世界的约定对齐——但对齐不了的部分,就是这题真正的考点。
这题特别的地方在于:它能把"跟着教程写过一个 Demo"和"在生产项目里迁移过"区分开。Demo 只用到AndroidView,而生产上大概率会撞上生命周期策略、update 块的执行时机、ComposeView挂在 Dialog 上不回收这三件事。能主动把这三条讲出来,这题就过了。
三条互操作通道与所有权归属
| 场景 | 入口 | 谁持有生命周期 | 谁持有状态 | 刷新由谁触发 |
|---|---|---|---|---|
| Compose 里嵌 View | AndroidView | View 侧(宿主 Activity/Fragment) | View 内部 | Compose 重组 → update 块 |
| View 里嵌 Compose |