HarmonyOS 鸿蒙Next 求进程通信

HarmonyOS 鸿蒙Next 求进程通信 有大佬能提供一下跨进程通信的demo案列吗,就最简单的helloword都行。博客,其他具体点的文档都行。官方文档把我玩忙比了。

问题1.我看了官方的进程通信的rpc文档,云里雾里的。

大佬帮我分析一下

创建对象

let code = 1;
let option: rpc.MessageOption = new rpc.MessageOption()
let data: rpc.MessageSequence = rpc.MessageSequence.create()
let reply: rpc.MessageSequence = rpc.MessageSequence.create()

写入数据data

data.writeRemoteObject(数据);

发送请求

sendMessageRequest(code, data, reply, option)

然后卡这里了,发送请求要怎么才能发送到对应的进程?

服务端怎么获取到客户端发送的进程请求。

有没有大佬帮忙写个demo解释一下。


更多关于HarmonyOS 鸿蒙Next 求进程通信的实战教程也可以访问 https://www.itying.com/category-93-b0.html

5 回复

可以用这个

@ohos/liveeventbus

OpenHarmony-SIG/LiveEventBus (gitee.com)

更多关于HarmonyOS 鸿蒙Next 求进程通信的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


姓名: 张三
职位: 软件工程师
技能: Python, Java, C++
个人简介: 拥有五年软件开发经验,熟悉多种编程语言和技术栈。

我只用过java的进程通信,看了文档,ts也基本一样

首先进程B启动一个服务,并在连接回调方法中返回rpc.RemoteObject

ServiceAbility开发指导

进程A调用featureAbility.connectAbility,连接进程B的一个服务,然后拿到进程B的remote对象

import rpc from '@ohos.rpc'
import featureAbility from '@ohos.ability.featureAbility'

function onConnectCallback(element, remote){
    console.log('ConnectAbility onConnect remote is proxy:' + (remote instanceof rpc.RemoteProxy));
}

function onDisconnectCallback(element){
    console.log('ConnectAbility onDisconnect element.deviceId : ' + element.deviceId)
}

function onFailedCallback(code){
    console.log('featureAbilityTest ConnectAbility onFailed errCode : ' + code)
}

var connId = featureAbility.connectAbility(
    {
        deviceId: "",
        bundleName: "com.ix.ServiceAbility",
        abilityName: "ServiceAbilityA",
    },
    {
        onConnect: onConnectCallback,
        onDisconnect: onDisconnectCallback,
        onFailed: onFailedCallback,
    },
);

进程A拿到IRemoteObject发送数据,进程B在服务的onRemoteRequest回调中接收

import rpc from "@ohos.rpc";

class FirstServiceAbilityStub extends rpc.RemoteObject {
    constructor(des: any) {
        if (typeof des === 'string') {
            super(des)
        } else {
            return
        }
    }

    onRemoteRequest(code: number, data: any, reply: any, option: any) {
        console.log(printLog + ` onRemoteRequest called`)
        if (code === 1) {
            let string = data.readString()
            console.log(printLog + ` string=${string}`)
            let result = Array.from(string).sort().join('')
            console.log(printLog + ` result=${result}`)
            reply.writeString(result)
        } else {
            console.log(printLog + ` unknown request code`)
        }
        return true;
    }
}

IRemoteObject

同一设备

姓名

张三

职位

软件工程师

兴趣爱好

  • 阅读
  • 篮球
  • 旅游
回到顶部