本文件說明元件管理員如何與個別元件執行個體互動,以管理其生命週期。
生命週期狀態
元件執行個體會透過下列主要生命週期狀態進行進度:
元件執行個體可能在未執行時,在儲存媒介上保留隔離的持續狀態,以便讓執行個體能在重新啟動後維持連續性。
已建立
元件執行個體可以透過下列方式建立:
- 設為元件管理員的根元件。
- 靜態探索為其他元件的「子項」。
- 在執行階段在集合中動態建立。
每個元件執行個體都有一個元件網址,用於說明如何解析元件,還有一個專門用來透過根路徑識別執行個體的執行個體。詳情請參閱元件 ID。
已解決
解決元件執行個體時,系統會擷取指定元件網址的元件宣告。元件管理員會尋找支援環境中相符網址配置的元件解析器,藉此解析元件網址。開發人員可以使用 ffx component resolve
指令手動解析元件。
元件必須先成功解析才能開始。
已開始
如果啟動元件執行個體,系統會載入並執行元件程式,並向其提供所需功能的存取權。
啟動元件執行個體最常見的原因,是另一個元件「繫結」至其其中一個公開功能。開發人員也可以使用 ffx component start
指令,手動啟動元件。
啟動後,元件執行個體會繼續執行,直到停止為止。
已停止
停止元件執行個體會終止元件的程式,但會保留其永久狀態。元件會在其程式結束時進入此狀態 (如元件的「執行器」定義)。
元件架構可能會因為以下原因而停止元件執行個體:
- 元件即將遭到刪除。
- 系統正在關機。
元件可實作生命週期處理常式 (範例),接收即將終止等事件的通知。請注意,在資源耗盡、停止運作或電源故障等情況下,元件可能無法接收這類事件。
關閉
元件管理員會將元件執行個體的最終執行狀態設定為關閉,以表示該執行個體無法重新啟動,並且表示執行個體可以安全刪除。
已刪除
元件執行個體可以透過下列方式刪除:
- 在執行階段從集合動態移除。如果元件是另一個要移除的元件的子系,也是如此。
刪除後,元件管理員會將執行個體從元件拓撲中完全移除,包括所有持續性狀態。相同元件的新執行個體會各自有自己的身分和狀態,與先前所有執行個體不同。
生命週期動作
本節說明元件架構用來轉換元件執行個體的生命週期狀態的常見動作。
裝訂
當 A
連線至 B
提供的某些能力時,元件執行個體 A
會「繫結」至另一個元件執行個體 B
。這會導致元件 B
在尚未執行時啟動。
具體而言,A
可透過兩種方式繫結至 B
:
A
會連線至命名空間中的能力,該功能是由B
公開或「提供」。這是最常見的做法。A
會繫結至由B
公開或提供的fuchsia.component.Binder
架構通訊協定。與傳統能力不同,這項通訊協定是由元件架構實作。