鸿蒙本机通信

发布于:2024-05-24 ⋅ 阅读:(79) ⋅ 点赞:(0)

demo地址
https://github.com/MartinLi89/WanHarmony

目前只学到一部分,不正确的地方,还望大家指正,我会及时更新,谢谢,欢迎评论留言

本篇帖子中描述的比较宽泛,我自己认知中,通信包含两层含义

  1. 事件触发
  2. 数据共享同步

按照我的定义,此处会有以下分类

  1. 组件间
    • 父子组件
    • 跨代组件
  2. page页面间
  3. 单个UIAbility VS 其自身 page之间
  4. 多个UIAbility 之间
  5. 线程间
  6. 进程间
  7. 应用间
  8. 设备间
关键字 父子组件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

进程间通信


网站公告

今日签到

点亮在社区的每一天
去签到