fuchsia.process.lifecycle

添加次数:7

协议

生命周期

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

组件可以实现生命周期协议,以接收生命周期事件通知。它还可以在框架中存储某种状态,以便在下次启动时将其重新提交到组件(这种做法称为“规避”)。

ELF 运行程序使用此协议向组件传达生命周期更改。如需详细了解 ELF 运行程序如何使用此协议,请参阅:https://fuchsia.dev/fuchsia-src/concepts/components/v2/elf_runner#lifecycle

OnEscrow

此第三方在组件退出前不久的状态。

当 ELF 运行程序收到此事件时,它会与框架进行安排,以等待组件的当前执行完成,然后在 outgoing_dir 上观察到 ZX_CHANNEL_READABLE 信号时重新启动组件。

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

通过 OnEscrow 托管的句柄始终都会传递到组件的下一次执行中。

添加了:HEAD

响应

名称类型
payload LifecycleOnEscrowRequest

停止

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

请求

<EMPTY>

LifecycleOnEscrowRequest 资源

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

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

托管传出目录服务器端点。每次再次启动该组件时,此字段将作为 PA_DIRECTORY_REQUEST processargs 条目返回。

escrowed_dictionary fuchsia.component.sandbox/Dictionary

代管某些用户定义的状态。每次再次启动组件时,此字段将作为 PA_ESCROWED_DICTIONARY processargs 条目返回。

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

示例

假设某个组件需要托管一个事件对,它表示某种开销很高的计算的结果。它可以创建一个字典,将事件对放入相应的键(例如 "my_event_pair")中,然后在启动时检查是否有该条目。