多HAP機制主要是為方便開發者進行模塊化管理。HAP和應用運行時的進程并不是一一對應的,具體運行機制如下:
默認情況下,應用中(同一包名)的所有UIAbility、ServiceExtensionAbility、DataShareExtensionAbility運行在同一個獨立進程中,其他同類型ExtensionAbility分別運行在單獨的進程。
HAP支持在module.json5(Stage模型)或者config.json(FA模型)中通過process標簽配置單獨的進程(僅系統應用支持,三方應用不支持)。配置了process的HAP,其組件運行在單獨的process進程中,多個HAP可以配置相同的process,則這些HAP運行在相同進程中,process配置的詳細說明請參見module.json5配置文件。
應用運行時,同一進程中的UIAbility組件被啟動時,才加載對應HAP的資源和代碼。
基于上述機制,多HAP數據通信方式如下:
同一進程內的數據通信,請參見線程間通信。
跨進程的數據通信,請參見進程間通信。
多HAP如果運行在同一進程,則多HAP間組件的通信方式與同一HAP內組件的通信方式相同。