fuchsia.process.lifecycle

新增日期:7

通訊協定

生命週期

定義於 fuchsia.process.lifecycle/lifecycle.fidl

元件可以實作生命週期通訊協定,以便接收生命週期事件的通知。還可以將部分狀態儲存在架構中,以便在下次啟動時重新傳送至元件 (這種做法稱為「託管」)。

ELF Runner 使用這個通訊協定向元件傳達生命週期變更,如要進一步瞭解這個通訊協定的使用方式,請參閱: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 程序引數項目。

escrowed_dictionary fuchsia.component.sandbox/Dictionary

託管部分使用者定義狀態。每當元件再次啟動時,系統就會傳回這個項目,做為 PA_ESCROWED_DICTIONARY 程序引數項目。

架構不會等待這些物件的任何信號。

範例

假設元件需要提報事件組合,代表某些昂貴的計算結果。它可以建立字典,將事件組合放入適當的鍵 (例如 "my_event_pair"),然後在啟動時檢查該項目。