demo地址
https://github.com/MartinLi89/WanHarmony
目前只學到一部分,不正確的地方,還望大家指正,我會及時更新,謝謝,歡迎評論留言
線程內通信,線程間通信,進程間通信
- 本篇帖子中描述的比較寬泛,我自己認知中,通信包含兩層含義
- 按照我的定義,此處會有以下分類
- 線程間通信
- 進程間通信
本篇帖子中描述的比較寬泛,我自己認知中,通信包含兩層含義
- 事件觸發
- 數據共享同步
按照我的定義,此處會有以下分類
- 組件間
- 父子組件
- 跨代組件
- page頁面間
- 單個UIAbility VS 其自身 page之間
- 多個UIAbility 之間
- 線程間
- 進程間
- 應用間
- 設備間
關鍵字 | 父子組件1 | 跨代組件 | page頁面間 | UIAbility page | UIAbility 之間 | 線程間 | 進程間 | 應用間 | 設備間 | 缺點 |
---|---|---|---|---|---|---|---|---|---|---|
globalThis | ? | ? | ? | ? | ? | ? | 相同名稱的對象時,先存放的對象會被后存放的對象覆蓋。 | |||
EventHub | ? | ? | ? | ? | ? | |||||
LocalStorage | ? | ? | ? | ? | ? | ? | ||||
AppStorage | ? | ? | ? | ? | ? | ? | ||||
Emitter | ? | ? | ? | ? | ? | ? | ||||
Worker | ? | Worker中不能直接更新Page | ||||||||
IPC(Inter-Process Communication) | ? | ? | ? | ? | ||||||
RPC(Remote Procedure Call) | ? | 需要native, c開發 |
globalThis
EventHub
onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {this.context.eventHub.on(CommonValues.LOCAL_PAGE, () => {promptAction.showToast({message: "eventHub LOCAL_PAGEadsdsd"})let want: Want = {bundleName: 'com.example.wanharmony',moduleName: 'entry',abilityName: 'EntryPictureAbility'}this.context.startAbility(want)})}
Text(item.title).height(40).padding(4).margin(4).backgroundColor(this.getRandomColor()).borderRadius(4).onClick(() => {if (item.link === CommonValues.LOCAL_PAGE) {getContext().eventHub.emit(CommonValues.LOCAL_PAGE)}})})
線程間通信
emitter . 線程間通信
Worker
進程間通信
- commentEventManager
進行進程間通信- 公共事件發布 + 自定義事件發布 - socket