热点新闻
华为鸿蒙 HarmonyOS API Version 6 关键差异点官方解读:JS API 和 Java API 变更
admin2021-07-20 05:36
299人已围观
简介华为鸿蒙 HarmonyOS API Version 6 关键差异点官方解读:JS API 和 Java API 变更
7 月 19 日消息 华为 HarmonyOS 官方表示,之前为各位开发者带来首份 API 差异报告,不少开发者还希望看到一份完整的 API 差异说明,现在华为官方发布了完整的 API 差异报告。
获悉,首先是版本信息说明。目前发布 HarmonyOS SDK 2.2.0.1(API Version 6 Beta 1),相较上一版本 HarmonyOS SDK 2.1.1.21(API Version 5),SDK 的变更主要体现在两个方面,分别是 Java API 变更(API 6 -> API 5)和 JS API 变更(API 6 -> API 5)。
下面是正式的差异报告解读。
一、JS API 变更(API 6 -> API 5)
1. 新增提供功能子系统的 API
相较于 JS API Version 5 ,JS API Version 6 新增 API 如下表所示:
2. 变更差异
JS API Version 6,新增了较多原子化服务相关的接口,本文列举了部分新增接口。
更多详细的更新内容请访问官网链接:https://developer.harmonyos.com/cn/docs/documentation/doc-releases/apidiff-js-api-6-phone-component-0000001170697425
(1)JS UI 框架子系统
新增了媒体、画布、栅格组件,如下表所示:
(2) 泛 sensor 子系统
新增了方向传感器及陀螺仪传感器的订阅、取消订阅接口,如下表所示:
(3)文件子系统
原文件存储“@system.file”接口,从 API Version 6 开始不再维护,推荐使用新接口 '@ohos.fileio' 进行文件管理,新增部分接口如下表:
(4)网络子系统
原数据请求 '@system.fetch',从 API Version 6 开始不再维护,推荐使用新接口 '@ohos.net.http' 发起 http 数据请求。新增部分接口如下表:
(5)分布式管理子系统
原数据存储 '@system.storage',从 API Version 6 开始不再维护,推荐使用新接口 '@ohos.data.storage' 进行数据管理。新增部分接口如下表:
二、 Java API 变更(API 6 -> API 5)
1. 基础能力增强
(1)Intent 新增 MissionTop 启动 flag
Intent 中新增了应用通过 missionTop 模式启动的字段 FLAG_ABILITY_MISSION_TOP。如果启动 ability 的现有实例已经位于任务堆栈的顶部,则将重用该实例。否则,将创建新的 ability 实例。相关使用代码如下:
Intent intent = new Intent(); Operation operation = new Intent.OperationBuilder() .withDeviceId("") .withBundleName("com.demo") .withAbilityName("com.demo.XxxAbility") .withFlags(Intent. FLAG_ABILITY_MISSION_TOP) .build(); intent.setOperation(operation); startAbility(intent);
(2)Intent 新增文件打开相关 Action 和 Entity
Class ohos.utils.IntentConstants 中新增了 Action 和 Entity,用于文件打开,如下所示:
String ACTION_EDIT_DATA = "ability.intent.EDIT_DATA"; String ACTION_SELECT = "ability.intent.SELECT"; String ACTION_SEND_DATA = "ability.intent.SEND_DATA"; String ACTION_SEND_MULTIPLE_DATA = "ability.intent.SEND_MULTIPLE_DATA"; String ACTION_SCAN_MEDIA_FILE = "ability.intent.SCAN_MEDIA_FILE"; String ACTION_VIEW_DATA = "ability.intent.VIEW_DATA"; String ENTITY_BROWSABLE = "entity.system.browsable";
开发者需要打开文件相关应用时,在 Intent 中设置对应 Action,代码如下所示:
Intent intent = new Intent(); Operation operation = new Intent.OperationBuilder() .withDeviceId(“”) .withAction(IntentConstants.ACTION_EDIT_DATA) .withEntities(IntentConstants.ENTITY_BROWSABLE) .build(); intent.setOperation(operation); startAbility(intent);
(3)FA 流转新增回调方法
Class ohos.aafwk.ability.continuation.IContinuationDeviceCallback 下新增了两个方法,onConnected (ContinuationDeviceInfo deviceInfo) 和 onDisconnected ( String deviceId )。用于在 FA 主动流转时,在选择设备列表选择设备的回调中,新增设备名称参数,让应用区分流转的具体设备。其中 ContinuationDeviceInfo 中包含 deviceId,deviceType,deviceName (新增) 字段,开发者可以根据需要获取。
JAVA API 6 废弃原有回调方法 onDeviceConnectDone (StringdeviceId, String deviceType),onDeviceDisconnectDone (StringdeviceId);
2. 卡片服务能力强化
(1)实现卡片服务克隆
由于没有卡片克隆功能,以往将卡片从旧设备迁移到新设备时,系统默认创建一个新的卡片,卡片原本携带的数据将不能克隆到新设备。本次更新,为卡片管理服务 FMS 适配了克隆接口,实现卡片的克隆。
(2)获取卡片状态
小艺建议是 HarmonyOS2 上一款主动推荐当下所需服务和应用的智慧化助手,在卡片智能推荐中,当卡片的状态未完成之前,可能会给消费者推荐一张空白卡片,这样对于消费者来说毫无意义。本次版本更新,Class ohos.aafwk.ability.Ability 中新增了 onAcquireFormState (Intent) 方法,提供获取卡片状态功能,通过调用 onAcquireFormState,询问卡片状态是否 ready。只有卡片状态 ready 的情况下,才会显示在小艺建议推荐位。
(3)设置下一次卡片刷新时间
以往的卡片刷新,以 30min 作为一个基础值,按照 30*N(N=1、2、3、4..)来设置更新频率。这无法满足某些应用如基金、航班类的卡片刷新需求,因为应用希望能在某些时间段动态的设置下次卡片的刷新时间。
本次版本更新中,Class ohos.aafwk.ability.Ability 中新增了 setFormNextRefreshTime (long,long) 方法,设置下次卡片刷新时间,用于卡片动态定时刷新。设置的时间间隔最小是 5min,每天最多设置 50 次。卡片管理服务根据提供方设置的时间更新定时器,定时器到点后,触发卡片应用的更新回调。
3. 新增沙盒文件分享
(1) FileAbility
ohos.data.file 类中新增了 FileAbility 能力,提供应用沙盒文件分享的能力,用于沙盒内文件的分享。获取沙盒文件的流程如下所示:
class FileAbility 中封装了获取文件信息的方法。
public class FileAbility extends Ability { public FileAbility() { throw new RuntimeException("Stub!"); } public void onStart(Intent intent) { throw new RuntimeException("Stub!"); } public String getType(Uri uri) { throw new RuntimeException("Stub!"); } public String[] getFileTypes(Uri uri, String mimeTypeFilter) { throw new RuntimeException("Stub!"); } public FileDescriptor openFile(Uri uri, String mode) { throw new RuntimeException("Stub!"); } public static Uri getUriViaFile(Context context, String Authority, File file) { throw new RuntimeException("Stub!"); } public static File getFileViaUri(Uri uri) { throw new RuntimeException("Stub!"); } }
(2)FileAbility 开发步骤
Step 1 声明:
config.json 中配置 FileAbility 类,指明 ability 类型为 data, 权限配置 grantPermission : true。
{ "name": "ohos.data.file.FileAbility", "icon": "$media:icon", "description": "$string:myfileability_description", "type": "data", "visible": true, "uri": "dataability://ohos.data.file.FileAbility", "grantPermission": true }
Step 2 配置转换关系:
在 hap 包内 resources/rawfile/ 目录下新建 fileability.json 的配置文件,用于配置 File 到 Uri 转换关系,同时指明哪些文件目录可以用来分享。配置转换关系后,路径会转换为对应 name。fileability.json 的配置文件如下所示:
{ "paths": [ { "tag" : "fileability-external-path", "name" : "external_storage_root", "path" : "." }, { "tag" : "fileability-files-path", "name" : "files-path", "path" : "." }, { "tag" : "fileability-cache-path", "name" : "cache-path", "path" : "." }, { "tag" : "fileability-external-files-path", "name" : "external_file_path", "path" : "." }, { "tag" : "fileability-external-cache-path", "name" : "external_cache_path", "path" : "." }, { "tag" : "fileability-root-path", "name" : "root-path", "path" : "" } ] }
Step 3 沙盒文件分享:
发送侧调用 getUriViaFile ()
File photoFile = new File(getFilesDir(), "test.jpg"); Uri uri = FileAbility.getUriViaFile(getContext(), "/ohos.data.file.FileAbility", photoFile); Intent intent1 = new Intent(); intent1.addFlags(0x00000001); intent1.addFlags(Intent.FLAG_NOT_OHOS_COMPONENT); intent1.setUriAndType(uri, "image/png"); ElementName element = new ElementName("","com.os1devp.intentlication2","com.os1devp.intentlication2.MainAbility"); intent1.setElement(element); startAbility(intent1);
接收侧调用 DataAbility.open () 获取文件句柄,处理沙盒文件:
DataAbilityHelper helper = DataAbilityHelper.creator(getContext()); Uri intentUri = intent.getOperation().getUri(); FileDescriptor fs = helper.openFile(intentUri, "r");
4. 新增后台代理提醒
(1)原方案
如下图所示,在原来的方案中,通过 Timer 类实现定时提醒,需要在后台拉起或者唤醒应用,导致后台应用对系统资源的占用,影响前台应用的用户体验。
(2)改进方案
能不能实现一个后台代理提醒的功能?统一托管所有提醒业务,在应用冻结或者退出之后,仍可进行倒计时、日历、闹钟的系统提醒。现在,他来了!
如下图所示,开发者可以使用后台代理提醒的能力。通过后台代理实现定时提醒的同时,实现对后台应用的严格管控,减少后台应用被拉起或者唤醒次数,从而节省系统资源的开销。
(3)新增内容
如何实现后台代理功能?在本次 API 更新中,Package ohos.event.notification 中新增了 5 大基础类,包括 ReminderHelper、ReminderRequest、ReminderRequestTimer、ReminderRequestCalendar、ReminderRequestAlarm,基础类之间的关系如下图所示:
Class ReminderHelper 中封装了代理通知基本操作,包括发布定时提醒类通知、注册提醒类需要使用的实例,取消指定的提醒类通知、取消当前应用设置的所有提醒。
Class ReminderRequest 中封装了通知提醒的基本方法,包括获取设置的提醒时长、获取设置的延迟提醒次数、获取提醒的标题等。
Class ReminderRequestTimer,提醒类子类,用于闹钟类提醒。
Class ReminderRequestCalendar,提醒类子类,用于日历类提醒。
Class ReminderRequestAlarm,提醒类子类,用于倒计时提醒。
5. 新增支持 continueAbility 免安装拉起 FA
在以往的跨端迁移过程中,需要两台设备都安装对应的 FA,否则将无法实现跨端迁移。本次更新,增强了 continueAbility 接口功能,在指定 deviceId 情况下,如果检测到远端设备未安装 FA,远端设备的框架会自动向 HAG 查询、下载并安装 FA 并将其拉起。
此外,IAbilityContinuation 接口中还新增了异常回调函数及错误码,如下所示:
public interface IAbilityContinuation { int ERR_ABILITY_QUERY_FAILED = -2; int ERR_CONTINUE_TIMEOUT = -8; int ERR_DEVICE_OFFLINE = -9; int ERR_INSTALL_FREE_NOT_SUPPORTED = -4; int ERR_NETWORK_UNAVAILABLE = -3; int ERR_PARAMETER_INVALID = -6; int ERR_PERMISSION_DENIED = -5; int ERR_REMOTE_DEVICE_INCOMPATIBLE = -7; int ERR_UNKNOWN = -1; int SUCCESS = 0; default void onFailedContinuation(int errorCode) { throw new RuntimeException("Stub!"); } }
6. 其他新增功能
(1)StartAbility()
Class ohos.aafwk.ability.Ability 中新增了带有回调参数的方法 startAbility (Intent,IAbilityStartCallback), 作用是在对端 Ability 免安装成功拉起后,回调开发者。避免了 Ability 在对端设备启动过程中的盲目等待。
(2)getIconId()、getLabelId()
Class ohos.bundle.ApplicationInfo 中新增了 getIconId ()、getLabelId () 两个方法,用于在 feature 没有配置 HomeAbility 的情况下,获取到应用的 label 和 icon。Label 是应用的标签,icon 为应用的图标。
三、总结
本次版本更新,新增内容较多,特别是 JS API 部分,新增了较多原子化服务相关的接口,感兴趣的用户可以点击,前往官网地址下载,升级尝鲜吧!
https://developer.harmonyos.com/cn/develop/deveco-studio#download_beta

微信公众号
很赞哦!(0)
相关文章
文章评论
评论0
站点信息
- 微信公众号:扫描二维码,关注我们

点击排行

标签云
-
php
网页设计
个人博客
JS
个人博客
Html
春节必看: 2020新春红包大战 全攻略
新增详细玩法攻略!
支付宝集五福5亿集分宝招商银行抽现金券抖
抖音 2020 发财中国年 攻略
支付宝集五福5亿集分宝招商银行抽现金券抖
最近购买威尔胜WTB0900复刻版和WT
mysql慢查询和php-fpm慢日志
PSR-2
基础代码规范
Thinkphp
响应式
公司
整站
源码
网络科技网站模板
1024
节日
百度收录
论坛
社区
2020
豆瓣
评分最高
电影
debugger
调试
Python
语法
高德
百度地图
MySQL
追寻
webpack
vue
oracle
服务器搭建
有趣
动物
人体
历史
天文
生活
名人
体育
地理
文化
科学
心理
植物
饮食
自然
图片
JVM
IDEA
Loader
Git
UNIAPP
股票
A股
同花顺
海尔
海天味业
半年报
股市总结
歌尔股份
乐普医疗
涪陵榨菜
餐饮
财报分析
酒店
年报分析
美锦能源
山煤国际
贵州茅台
张坤
腾讯
华鲁恒升
淮北矿业
药明康德
早盘关注
国电电力
北方华创
宝丰能源
TCL中环
兔宝宝
天润乳业
启明星辰
阳光电源
山西汾酒
迈瑞医疗
人福医药
比亚迪
宁德时代
汤臣倍健
伊利股份
通威股份
东鹏饮料
隆基股份
紫金矿业
五粮液
康龙化成
赣锋锂业
爱尔眼科
片仔癀
VR
永新股份
爱美客
美的集团
格力电器
科沃斯
云南白药
同仁堂
洋河股份
白云山
三体
狂飙 原著