ArkUI-X与Android消息通信
平台桥接用于客户端(ArkUI)和平台(Android或iOS)之间传递消息,即用于ArkUI与平台双向数据传递、ArkUI侧调用平台的方法、平台调用ArkUI侧的方法。本文主要介绍Android平台与ArkUI交互,ArkUI侧具体用法请参考Bridge API,Android侧参考BridgePlugin。
创建平台桥接
1.在ArkUI侧创建平台桥接。指定名称,该名称应与Android侧平台桥接的名称一致。通过创建的该对象即可调用平台桥接的方法。数据可以发送json格式或二进制格式。
// xxx.ets
// 导入平台桥接模块
import bridge from '@arkui-x.bridge';
// 创建平台桥接实例
const bridgeImpl = bridge.createBridge('Bridge');
// 创建平台桥接实例(二进制格式)
const bridgeImpl = bridge.createBridge('Bridge', BridgeType.BINARY_TYPE);
2.在Android侧创建BridgePlugin类。指定名称,该名称应与ArkUI侧平台桥接的名称一致。通过创建的该对象即可调用平台桥接的方法。
// xxx.java
Bridge bridge = new Bridge(this, "Bridge", getBridgeManager());
Bridge bridge = new Bridge(this, "Bridge", getBridgeManager(), BridgePlugin.BridgeType.BINARY_TYPE);
ArkUI侧向Android侧传递数据
1.ArkUI侧向Android侧传递数据。
// xxx.ets
private bridgeImpl = bridge.createBridge('Bridge');
this.bridgeImpl.sendMessage('text').then((res)=>{
// 监听Android侧的回执
console.log('response: ' + res);
}).catch((err: Error) => {
console.log('error: ' + JSON.stringify(err));
});
2.Android侧接收来自ArkUI侧的数据。
// xxx.java
// 创建平台桥接实例(将在since 13废弃,推荐使用新构造方法)
public Bridge(Context context, String name, int id) {
super(context, name, id);
setMessageListener(this);
}
// 创建平台桥接实例(新)
public Bridge(Context context, String name, BridgeManager bridgeManager) {
super(context, name, bridgeManager);
setMessageListener(this);
}
// 注册回调,监听ArkUI侧的数据传递
@Override
public Object onMessage(Object data) {
// 返回回执给ArkUI侧
return "java onMessage success";
}
Android侧向ArkUI侧传递数据
1.Android侧向ArkUI侧发送数据。
// xxx.java
String[] data = { "message", "from", "android" };
bridge.sendMessage(data);
2.ArkUI侧设置回调,用于接收Android侧发送的数据。
// xxx.ets
private bridgeImpl = bridge.createBridge('Bridge');
this.bridgeImpl.setMessageListener((message) => {
console.log('receive message: ' + message);
// 收到消息后,向Android侧发送回执
return "ArkUI receive message success";
});
3.Android侧注册回调,监听ArkUI侧收到数据后的回执。
// xxx.java
// 创建平台桥接实例(将在since 13废弃,推荐使用新构造方法)
public Bridge(Context context, String name, int id) {
super(context, name, id);
setMessageListener(this);
}
// 创建平台桥接实例(新)
public Bridge(Context context, String name, BridgeManager bridgeManager) {
super(context, name, bridgeManager);
setMessageListener(this);
}
// 注册回调,监听ArkUI侧的回执
@Override
public void onMessageResponse(Object data) {}
ArkUI-X与Android消息通信的更多相关文章
- Android消息通信 第三方开源项目EventBus 的用法
EventBus是github上的一个第三方开发库,其在github上的项目主页地址:https://github.com/greenrobot/EventBus EventBus的消息模型是消息发布 ...
- Android线程消息通信(一)
Android在Java标准线程模型的基础上,提供了消息驱动机制,用于多线程之间的通信.基于消息驱动机制的线程通信模型陈伟线程消息通信.在标准线程模型中,线程执行完毕后便退出,而Android扩展了线 ...
- Android消息机制
每一个Android应用在启动的时候都会创建一个线程,这个线程被称为主线程或者UI线程,Android应用的所有操作默认都会运行在这个线程中. 但是当我们想要进行数据请求,图片下载,或者其他耗时操作时 ...
- Android消息机制:Looper,MessageQueue,Message与handler
Android消息机制好多人都讲过,但是自己去翻源码的时候才能明白. 今天试着讲一下,因为目标是讲清楚整体逻辑,所以不追究细节. Message是消息机制的核心,所以从Message讲起. 1.Mes ...
- Android消息推送完美方案[转]
转自 Android消息推送完美方案 推送功能在手机应用开发中越来越重要,已经成为手机开发的必须.在Android应用开发中,由于众所周知的原因,Android消息推送我们不得不大费周折.本文就是用来 ...
- Android消息推送完美方案
转自:http://bbs.hiapk.com/thread-4652657-1-1.html 推送功能在手机应用开发中越来越重要,已经成为手机开发的必须.在Android应用开发中,由于众所周知的原 ...
- Android消息推送完美解决方案全析
推送功能在手机应用开发中越来越重要,已经成为手机开发的必须.在Android应用开发中,由于众所周知的原因,Android消息推送我们不得不大费周折.本文就是用来和大家共同探讨一种Android消息推 ...
- Android消息推送的服务端
2.Android消息推送 MQTT服务器采用mosquito http://mosquitto.org/ PHP管理包采用phpmqttclient:https://github.com/toku ...
- Android开发之漫漫长途 ⅥI——Android消息机制(Looper Handler MessageQueue Message)
该文章是一个系列文章,是本人在Android开发的漫漫长途上的一点感想和记录,我会尽量按照先易后难的顺序进行编写该系列.该系列引用了<Android开发艺术探索>以及<深入理解And ...
- 安卓中不同APP之间的消息通信
昨天在腾讯实习生招聘初试面试时面试官问道我关于两个APP之间相互通信的方式,当时自己回道到了contentProvider与BroadcastReceiver.但他接着问还有没有其它的方式,我跟他说可 ...
随机推荐
- PX4 仿真环境开发整理
博客地址:https://www.cnblogs.com/zylyehuo/ (一)PX4 仿真开发 搭建仿真环境 概念介绍及环境建议 MAVROS安装(适用于ROS1.ROS2) Ubuntu安装Q ...
- Tomcat性能优化以及 jvm 参数设置
linux ps 命令的结果中 VSZ,RSS,STAT 的含义和大小 参数名 含义 单位 USER 进程所属用户 PID 进程ID %CPU 进程占用CPU百分比 %MEM 进程占用内存 ...
- Centos 安装 nload (流量监控)
QQ交流群:646559931.系统安装基本工具[root@localhost ~]# yum install -y gcc gcc-c++ make flex byacc libpcap ncurs ...
- English interview - three interesting questions of algorithm analysis (英语面试- 三道有趣的算法分析题目)
Background introduction Here are some problems related to Big-O notation. From now on, I will try to ...
- 字符串成员方法:截取、替换、切割 及String成员方法小结
1.截取 subString() subString()方法有两种使用方式: 1.第一种是在括号里只放入一个索引,这时将会从放入的索引为起点,一直截取到末尾 2.第二种是在括号里放入两个索引,分别对应 ...
- 【Linux】3.8 Linux磁盘分区、挂载
Linux磁盘分区.挂载 1. 分区方式 mbr分区 最多支持四个主分区 系统只能安装在主分区 扩展分区要占一个主分区 MBR最大只支持2TB,但拥有最好的兼容性 gpt分区 支持无限多个主分区(但操 ...
- Ubuntu14.04系统设置菜单选项缺失
最近折腾Ubuntu14.04,突然有一天发现系统设置里少了好多菜单选项,莫名的zuo ji,解决办法如下,留爪. 问题图示 解决办法 #首先打开终端输入,终端快捷键[Ctrl + Alt + T] ...
- Hyperledger Fabric - 区块链应用
Fabric Gateway SDK 实现Fabric的编程模型,提供了一系列简单的API给应用程序与Fabric区块链网络进行交互 应用程序将各自的网络交互委托给其网关,每个网关都了解网络信道拓扑, ...
- Java 与 LLM 大模型融合的技术革命:JBoltAI 如何重构企业级 AI 开发范式
Java 与 LLM 大模型融合的技术革命:JBoltAI 如何重构企业级 AI 开发范式 一.Java 技术栈的智能化转型挑战 随着 LLM(大语言模型)技术的突破,全球超过 900 万家 Java ...
- [开源] 分享一个自己开发的, 整合SMS/Mail/Telegram/微信四个平台的开源信息收发平台
起因于已有的聚合信息发送平台无法满足自己的需求. 不支持我需要的平台,或不支持接收信息后进行处理,或不放心把涉及隐私的消息通过第三方平台发送 利用SMS发送短信(上一篇文章中分享的开源项目) 利用SM ...