fuchsia.process.lifecycle

添加时间:7

协议

生命周期

fuchsia.process.lifecycle/lifecycle.fidl 中定义

组件可以实现生命周期协议,以接收生命周期通知 事件。它还可以将某个状态存储在框架中,以便重新传递给 组件(这种做法称为“托管”)。

ELF Runner 使用此协议来传达生命周期变更 ,要详细了解该组件如何使用此协议,请参见: https://fuchsia.dev/fuchsia-src/concepts/components/v2/elf_runner#lifecycle

OnEscrow

组件退出前不久的托管状态。

当 ELF 运行程序收到此事件时,它会按照 框架等待,直到组件的当前执行 然后在 ZX_CHANNEL_READABLE 加载完毕时再次启动组件 在 outgoing_dir 上观测到信号。

重复调用将替换旧的托管值。建议不要这样做。

通过 OnEscrow 托管的句柄始终会传递到下一个 组件执行情况

添加时间:HEAD

响应

名称类型
payload LifecycleOnEscrowRequest

停止

进程必须清理其状态以准备终止,并且 必须关闭托管 Lifecycle 协议的通道, 随时可以终止进程完成后应退出 清理。由系统自行决定,进程可能会终止 然后再关闭 Lifecycle 渠道。

请求

<空>

LifecycleOnEscrowRequest 资源

fuchsia.process.lifecycle/lifecycle.fidl 中定义

序数字段类型说明
outgoing_dir server_end<fuchsia.io/Directory>

托管传出目录服务器端点。每当 组件再次启动后,系统会将其作为 PA_DIRECTORY_REQUEST processargs 条目。

escrowed_dictionary fuchsia.component.sandbox/DictionaryRef

托管某个用户定义的状态。每当组件启动时 该字段将作为 PA_ESCROWED_DICTIONARY 返回 processargs 条目。

框架不会等待这些对象上的任何信号。

示例

假设某个组件需要托管一个表示 一些高昂的计算结果。它可以创建 字典中,使用适当的键将事件对放入其中 (例如 "my_event_pair"),然后在启动时检查该条目。