协议
生命周期
在 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
托管的句柄始终都会传递到组件的下一次执行中。
响应
名称 | 类型 |
---|---|
payload |
LifecycleOnEscrowRequest
|
停止
该进程必须清理其状态以准备终止,并且必须在准备好终止时关闭托管 Lifecycle
协议的通道。该进程应在完成清理后退出。系统可自行决定,在关闭 Lifecycle
通道之前,进程可能会被终止。
请求
<EMPTY>
表
LifecycleOnEscrowRequest 资源
在 fuchsia.process.lifecycle/lifecycle.fidl 中定义
序数 | 字段 | 类型 | 说明 |
---|---|---|---|
1 |
outgoing_dir |
server_end<fuchsia.io/Directory>
|
托管传出目录服务器端点。每次再次启动该组件时,此字段将作为 |
2 |
escrowed_dictionary |
fuchsia.component.sandbox/Dictionary
|
代管某些用户定义的状态。每次再次启动组件时,此字段将作为 框架不会等待有关这些对象的任何信号。 示例假设某个组件需要托管一个事件对,它表示某种开销很高的计算的结果。它可以创建一个字典,将事件对放入相应的键(例如 |