ArkUI-X平台桥接Bridge说明
简介
平台桥接用于客户端(ArkUI)和平台(Android或iOS)之间传递消息,即用于ArkUI与平台双向数据传递、ArkUI侧调用平台的方法、平台调用ArkUI侧的方法。
以Android平台为例,ArkTS和Java没有相互调用的能力,为了实现ArkTS和Java交互,需要ArkTS与C++交互,C++再与Java交互,反之亦然。但是对于开发者,就像是ArkTS和Java直接交互。
本文介绍如何通过平台桥接编写自定义的Android、iOS平台代码。ArkUI侧具体用法请参考Bridge API,Android侧参考BridgePlugin,iOS侧参考BridgePlugin。
使用场景及能力
使用场景
平台桥接主要用于这样的场景:应用需要复用平台的代码,而在OpenHarmony中没有对应的跨平台API(不包括UI相关)实现。
具体可用于以下场景:
1、ArkUI与平台双向传递数据,如传递JSON数据、图片等;
2、ArkUI侧调用平台的API,如获取Android或iOS平台上的电池电量、复用平台上的三方库等;
3、平台调用ArkUI侧的方法,如复用JavaScript的三方库等。
说明
平台桥接支持ArkUI调用Android Java API和iOS Objective-C API。此外,一些平台相关功能可直接通过已有的OpenHarmony跨平台API实现。
数据类型支持
平台桥接通过JSON格式或二进制格式序列化编解码传递数据,支持基础数据类型、数组类型和结构化数据。具体支持类型如下表
JSON格式数据支持类型表:
| ArkTS | Java | Objective-C |
|---|---|---|
| string | java.lang.String | NSString |
| number(32bit integer) | java.lang.Integer | NSNumber numberWithInt |
| number(64bit integer) | java.lang.Long | NSNumber numberWithLong |
| number(double) | java.lang.Double | NSNumber numberWithDouble |
| boolean | java.lang.Boolean | NSNumber numberWithBool |
| null | null | NSNull |
| Array<string> | string[] | NSArray |
| Array<number> | int[], long[], double[] | NSArray |
| Array<boolean> | boolean[] | NSArray |
| Record<string, S> | java.util.HashMap | NSDictionary |
二进制格式数据支持类型表:
| ArkTS | java类型 | OC类型 |
|---|---|---|
| null | null | NSNull |
| boolean | java.lang.Boolean | NSNumber numberWithBool |
| number(32bit integer) | java.lang.Integer | NSNumber numberWithInt |
| number(64bit integer) | java.lang.Long | NSNumber numberWithLong |
| number(double) | java.lang.Double | NSNumber numberWithDouble |
| string | java.lang.String | NSString |
| ArrayBuffer | java.nio.ByteBuffer | NSData |
| Array<string> | string[] | NSArray |
| Array<number> | int[], long[], double[] | NSArray |
| Array<boolean> | boolean[] | NSArray |
| Record<string, S> | java.util.HashMap | NSDictionary |
说明
1、S表示string、number、boolean类型;
2、Record表示<key, value>类型,key仅为string类型,value为S类型;
3、string类型数据最大传输大小限制为2MB;
ArkUI-X平台桥接Bridge说明的更多相关文章
- 设计模式初探-桥接(Bridge)模式
桥接(Bridge)模式,又称Handle/Body模式,属于对象结构型模式.用于将抽象部分与它的实现部分分离,使它们都可以独立地变化.比如常见的电脑窗口界面,不同的操作系统其窗口界面绘制的原理肯定不 ...
- Java 实现桥接(Bridge)模式
类图: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvamp3d21scDQ1Ng==/font/5a6L5L2T/fontsize/400/fill/I0 ...
- Objective-C设计模式——桥接Bridge(接口适配)
桥接模式 桥接模式就是让抽象和实现分离的最好体现,符合面向对象的依赖倒转原则.Abstruct抽象类负责设计客户端接口,Implementor则负责具体的细节逻辑. 在桥接模式中,Abstruct类持 ...
- 设计模式C++描述----09.桥接(Bridge)模式
一. 举例 N年前: 计算机最先出来时,软件和硬件是一绑在一起的,比如IBM出了一台电脑,上面有一个定制的系统,假如叫 IBM_Win,这个IBM_Win系统当然不能在HP电脑上运行,同样HP出的HP ...
- 桥接(Bridge)模式
桥接模式又称为柄体模式或接口模式.桥接模式的用意就是"将抽象化与实现化解耦,使得二者可以独立变化". 抽象化: 存在于多个实体中的共同的概念性联系,就是抽象化.作为一个过程,抽象化 ...
- 漫谈设计模式(三):桥接(Bridge)模式 —— 将类功能、结构两层次分离
1.前言 类主要有两个层次,一个是功能层次,另一个是实现层次. 功能层次,一般应用于当前类不能满足多样化的业务需求,让子类去继承(具体)父类,添加加一些父类中没有的功能(一般是增加新的方法),这就属于 ...
- Java设计模式---桥接Bridge模式
参考于 : 大话设计模式 马士兵设计模式视频 写在开头: 桥接模式主要用于一件事物分成了两个维度,进行排列组合,比如礼物,可以分成优雅的礼物(抽象),花(具体),排列组合优雅的花! 1.为什么使用桥接 ...
- 设计模式--桥接(Bridge)模式
1.概述: 桥接模式:把抽象和行为分离开来,中间需要某个介质来连接抽象化和行为化.此模式的概述听起来非常像适配器模式,不要搞混了,虽然都是借用中间介质,但意义不同.最典型的桥接模式就是:JDBC.通过 ...
- VMware 桥接 Bridge 复制物理网络连接状态
https://zhidao.baidu.com/question/535593443.html 意思就是说,VM上使用的是虚拟的网卡,也就是说VM虚拟机上的网卡不是真实存在的,而桥接还有其他的网路链 ...
- linux网络连接--桥接bridge,NAT,host-only的区别
linux网络连接主要分为三种:桥接,net,host_only 桥接使用的是真实网卡,电脑里面有两种真实网卡,有线网卡,无线网卡,当你使用的是无线连接, 则选择无线网卡,使用网线连接,则选择有线网卡 ...
随机推荐
- kvm内存优化--KSM
一.KSM(Kernel SamePage Merging) 1.KSM简介 KSM允许内核在多个进程(包括虚拟机)之间共享完全相同的内存页,KSM让内核扫描检查正在运行中的程序并且比较他们的内存,若 ...
- 【CF比赛记录】Codeforces Round 1013 (Div. 3)
比赛链接 本文发布于博客园,会跟随补题进度实时更新,若您在其他平台阅读到此文,请前往博客园获取更好的阅读体验. 跳转链接:https://www.cnblogs.com/TianTianChaoFan ...
- this和super--java进阶day01
1.this和super的代表 super是父类的标识符,如堆内存中的标志 2.this和super的访问 重点说访问构造方法,super()访问父类构造方法我们已经清楚,但是this()访问本类构造 ...
- WebKit Inside: 渲染树
经过CSS的匹配,就要进入渲染树的构建. 渲染树也叫RenderObject树,因为渲染树上每一个节点,都是RenderObject的子类. 首先来看一下RenderObject的继承类图. 1 Re ...
- freertos消息队列的值传递和指针传递
消息队列的使用方法总结: 1.消息队列初始化(定义一个消息队列的结构体),一般在main.c中完成. 2.消息队列的发送: a extern 消息队列 b 定义一个结构体的指针指向消息消息队列 ...
- DAY2--IMU测量单元&emmc内存
打智能车比赛天天碰到imu这个东西,今天给他弄清楚去 1.IMU介绍 惯性测量单元(Inertial measurement unit,简称 IMU),是测量物体三轴姿态角及加速度的装置.一般IMU包 ...
- Java中的常见排查问题命令
一.线上服务排查,从三个方面负载.cpu.内存 这三个方面着手 1:top 命令是比较常见的,也是最常用的,因为他显示的信息也是最全的 2:针对负载的问题,我们怎么能确定负载当前是高还是低? 一般来说 ...
- 🔥Elasticsearch(ES)(版本7.x)数据更新后刷新策略RefreshPolicy
简介 在Elasticsearch 7.x版本中,当更新数据时(例如索引.更新或删除文档),这些更改并不会立即对搜索可见.为了让这些更改能够被搜索到,需要了解和选择合适的刷新策略(Refresh Po ...
- 40+程序员亲历AI冲击,出路在何方?
关注[智践行],我们一起成长 技术革新从不以人的意志为转移,但却能因个人的选择而重铸职业轨迹,AI崛起的当下,程序员的命运之笔正握在自己手中. 今年春节前后,AI界热闹非凡,各种大模型的新突破.超强的 ...
- 什么是 Write-Ahead Logging (WAL) 技术?它的优点是什么?MySQL 中是否用到了 WAL?
什么是 Write-Ahead Logging (WAL) 技术? Write-Ahead Logging (WAL) 是一种用于数据库系统的日志记录技术,它要求在对数据库进行任何修改之前,所有的修改 ...