基于《2022重庆邮电大学-HarmonyOS移动应用开发》的学习【6-11】 原创 精华

发布于 2022-2-22 14:45
浏览
6收藏

【本文正在参与优质创作者激励】

Author:Hairtail

HarmonyOS移动应用开发课程链接
基于《2022重庆邮电大学-HarmonyOS移动应用开发》的学习【1-5】
基于《2022重庆邮电大学-HarmonyOS移动应用开发》的学习【6-11】-开源基础软件社区

六、HarmonyOS JS UI前端开发

(一)JS前端开发基础

1.框架介绍

  • JS UI框架是一种跨设备的高性能UI开发框架,支持声明式编程和跨设备多态UI
  • 基础能力:
    • 声明式编程
    • 跨设备
    • 高性能
  • JS UI框架包括应用层(Application)、前端框架层(Framework)、引擎层(Engine) 和平台适配层(Porting Layer)
    • Application应用层,JS FA应用
    • Framework前端框架层,完成前端页面解析,提供相应能力
    • Engine引擎层,提供解析、构建、计算、渲染、管理等能力
    • Porting Layer适配层,成对平台层进行抽象,提供抽象接口,可以对接到系统平台

基于《2022重庆邮电大学-HarmonyOS移动应用开发》的学习【6-11】-开源基础软件社区

2.JS FA的使用

(1)AceAbility
  • JS FA是基于AceAbility类,而AceAbility是继承于Ability
(2)如何加载JS FA
  • 生命周期分类
    • 应用生命周期
    • 页面生命周期
  • 通过setInstanceName()接口设置该Ability的实例资源,参数是指实例名称,与config.json文件 中module.js.name的值对应
  • 加载主页面:
//在MainAbility的onStart()中的super.onStart()前调
用此接口
public class MainAbility extends AceAbility {
	@Override
	public void onStart(Intent intent) {
		setInstanceName("JSComponentName"); 
		// config.json配置文件中module.js.name的标签值
		super.onStart(intent);
}
}

基于《2022重庆邮电大学-HarmonyOS移动应用开发》的学习【6-11】-开源基础软件社区

(3)JS FA开发目录

基于《2022重庆邮电大学-HarmonyOS移动应用开发》的学习【6-11】-开源基础软件社区

(二)一个典型JS FA应用开发

HarmonyOS官方文档-详细展开

基于《2022重庆邮电大学-HarmonyOS移动应用开发》的学习【6-11】-开源基础软件社区

(三)构建用户界面

1.基础组件

  • 分类:基础组件、容器组件、媒体组件、画布组件
  • 组件通用特性:HarmonyOS官方文档-通用
    • 通用属性(标识、外观)
    • 通用样式(大小、位置)
    • 通用事件(动态交互-手势事件、按键事件)

基于《2022重庆邮电大学-HarmonyOS移动应用开发》的学习【6-11】-开源基础软件社区

2.构建布局

  • 布局:一个页面的基本元素包含标题区域、文本区域、图片区域等
  • 需要思考的问题:
    • 组件尺寸、排列位置
    • 是否有重叠部分
    • 是否需要设置对齐、内间距或者边界
    • 是否包含子元素及其排列位置
    • 是否需要容器组件及其类型
  • 步骤:
    • 页面分解
    • 定义文档结构
    • 定义文档样式
    • 动态内容与交互
    • 添加图片区域

3.容器组件

  • 可以理解为盒子
  • 常见的
    • div
    • list(列表)
    • tabs(标签)
    • dialog(自定义弹窗)
    • form(表单)
  • 注意:dialog仅支持单子组件、tabs适用于需要频繁切换和加载、list适用于长列表

4.添加交互

  • 以一个点赞交互为例
    • div里面(image+text)
    • 点击赞的图片,图片变化、text文本点赞数也变化
  • 步骤:
    • 页面构建(设置伪类:focusable、动态数据绑定)
    • 添加交互(onclick事件)

5.页面路由

  • 调用 router.push()接口将uri指定的页面添加到路由栈中,即跳转到uri指定的页面

6.焦点逻辑

  • 焦点移动是智慧屏的主要交互方式,其规则
    • 容器组件焦点分发逻辑:容器组件在第一次获焦时焦点一般都落在第一个可获焦的子组件上, 再次获焦时焦点落在上一次失去焦点时获焦的子组件上。容器组件一般都有特定的焦点分发逻辑
  • 每个组件获焦方式
    • list组件每次获焦时会使第一个可获焦的item获 焦
    • stack组件只能由自顶而下的第一个可获焦的子组件获焦
    • swiper的每个页面和refresh的页面的焦点逻辑都与div的相同
    • tab-bar中的子组件默认都能获焦,与是否有可获 焦的叶子结点无关
    • dialog的button可获焦,若有多个button,默认初始焦点落在第二个button上
    • popup无法获焦

基于《2022重庆邮电大学-HarmonyOS移动应用开发》的学习【6-11】-开源基础软件社区

(四)动画

1.静态动画

  • 核心是transform样式(对于静态动画你可以看到动起来后的效果)
    • 即:静态动画只有开始状态和结束状态,没有中间状态
    • translate:沿水平或垂直方向将指定组件移动所需距离
    • scale:横向或纵向将指定组件缩小或放大到所需比例
    • rotate:将指定组件沿横轴或纵轴或中心点旋转指定的角度

2.连续动画

  • 连续动画的核心是animation样式(需要定义关键帧keyframe)
    • animation-name:设置动画执行后应用到组件上的背景颜色、透明度、宽高和变换类型;
    • animation-delay和animation-duration:分别设置动画执行后元素延迟和持续的时间;
    • animation-timing-function:描述动画执行的速度曲线,使动画更加平滑;
    • animation-iteration-count:定义动画播放的次数;
    • animation-fill-mode:指定动画执行结束后是否恢复初始状态

(五)用户交互

  • 手势事件
    • 触摸
    • 点击
    • 长按
  • 按键事件(用户点击一个遥 控器按键,通常会触发两次key事件)
  • 语音事件
  • 多模输入:多模输入使HarmonyOS的UI控件能够响应多种输入事件,事件来源于用户的按键、点击、 触屏、语音等。提供创建事件能力和获取输入设备信息能力。

(六)自定义组件

  • 什么时候需要自定义组件:特殊需求,后续需要反复使用
  • 流程:封装成的新组件->element引入组件->使用组件

(七)JS FA调用PA

  • FA调用PA两种方法
    • Ability
    • Internal Ability两

Ability:拥有独立的Ability生命周期,FA使用远端进程通信拉起并请求PA服务,适用于基本服 务供多FA调用或者服务在后台独立运行的场景

Internal Ability:与FA共进程,采用内部函数调用的方式和FA进行通信,适用于对服务响应时 延要求较高的场景。该方式下PA不支持其他FA访问调用

  • 交互流程:JS端与Java端通过bundleName和abilityName来进行关联。在系统收到JS调用请求后, 根据开发者在JS接口中设置的参数来选择对应的处理方式。开发者在onRemoteRequest() 中实现PA提供的业务逻辑

  • FA调用PA接口:

    • FA端提供:
      • FeatureAbility.callAbility(OBJECT):调用PA能力;
      • FeatureAbility.subscribeAbilityEvent(OBJECT, Function):订阅PA能力
      • FeatureAbility.unsubscribeAbilityEvent(OBJECT):取消订阅PA能力
    • PA端提供:
      • IRemoteObject.onRemoteRequest(int,MessageParcel, MessageParcel, MessageOption):Ability调用方式,FA使用远端进程通信拉起并请求PA服务
      • AceInternalAbility.AceInternalAbilityHandler.onRemoteRequest(int, MessageParcel, MessageParcel, MessageOption):Internal Ability调用方式,采用内部函数调用的方式 和FA进行通信
  • Ability和Internal Ability的区别

基于《2022重庆邮电大学-HarmonyOS移动应用开发》的学习【6-11】-开源基础软件社区

(八)测一测

1.应用层-前端框架层-引擎层-平台适配层

2.组件的尺寸和排列位置、是否需要设置对齐、内间距或者边界、是否包含子元素及其排列位置、是否需要容器组件及其类型

3.×

4.提高页面布局代码的可读性、提高常用功能的重用性

5.静态动画、连续动画

6.是否需要修改config.json文件、是否需要在FA中注册、是否能被其他应用的FA访问

7.√

8.×

七、HarmonyOS数据持久化

  • 持久化:就是把数据存储在设备上

(一)创建Data Ability

  • PA支持DA和SA,这里的DA就是Data Ability,提供数据服务
  • 数据的存放形式多样,可以是数据库,也可以是磁盘上的文件。Data对外提供对数据的 增、删、改、查,以及打开文件等接口,这些接口的具体实现由开发者提供。Data提供了两组接口
    • 文件存储
    • 数据库存储
  • 在存储数据时,需要确定数据存储方式
    • 文件数据:如文本、图片、音乐等
    • 结构化数据:如数据库等
  • Ability定义了6个方法供用户处理对数据库表数据的增删改查
    • 基于《2022重庆邮电大学-HarmonyOS移动应用开发》的学习【6-11】-开源基础软件社区
  • 实现UserDataAbility(用于接收其他应用发送的请求,提供外部程序访问的入口,从而实现应用间的数据访问)
    • (1)创建UserDataAbility
    • 基于《2022重庆邮电大学-HarmonyOS移动应用开发》的学习【6-11】-开源基础软件社区
    • (2)注册UserDataAbility(配置文件中该字段在创建Data Ability时会自动创建)
      • 需要关注:type、uri、permission三个属性
      • uri是标识一个具体的数据格式:基于《2022重庆邮电大学-HarmonyOS移动应用开发》的学习【6-11】-开源基础软件社区
    • 基于《2022重庆邮电大学-HarmonyOS移动应用开发》的学习【6-11】-开源基础软件社区

(二)文件存储

  • 代码中的操作:

    • ohos.rpc.MessageParcel类提供了一个静态方法,用于获取MessageParcel实例。开发者可通过获取到的MessageParcel实例,使用dupFileDescriptor()函数复制待操作文件流的文件描述符,并将其返回,供远端应用访问文件
  • Data Ability是服务端、DataAbilityHelper作为客户端

  • 使用DataAbilityHelper的步骤:

    • (1)生命使用权限(文件、系统)

    • (2)创建DataAbilityHelper(使用creator()方法创建)

      • DataAbilityHelper helper = DataAbilityHelper.creator(this);
        
    • (3)访问Data Ability(了FileDescriptor openFile(Uri uri, String mode)方法操作文件)

(三)关系数据库

  • 轻量级的关系数据库,基于SQLite组件提供了一套完整的对本地数据库进行管理的机 制,对外提供了一系列的增、删、改、查接口
    • 特别是查询效率很高
  • 基本概念:
    • 关系型数据库:创建在关系模型基础上的数据库,以行和列的形式存储数据
    • SQLite:是轻型的数据库
    • 谓词:用来 定义数据库的操作条件
    • 结果集:方便的拿到用户想要的数据
  • 运行机制:
    • 对外提供通用的操作接口,底层使用SQLite作为持久化存储引 擎,支持SQLite具有的所有数据库特性,包括但不限于事务、索引、视图、触发器、外 键、参数化查询和预编译SQL语句
  • 数据库的增删改查:
  • 开发步骤:
    • (1)创建数据库(配置信息、初始化内容、创建数据库)
    • (2)插入数据(构造数据以以ValuesBucket存储、调用插入接口)
    • (3)查询数据(构造对象、设置查询条件、指定查询行列、调用查询接口、返回查询结果)

(四)对象关系数据库

  • 对象关系映射数据库:基于 SQLite的数据库框架,屏蔽了底层SQLite数据库的SQL操作,针对实体和关系提供了增删改查等一系列的面向对象接口
  • 三个主要组件:
    • (1)数据库:被开发者用**@Database注解**,且继承了OrmDatabase的类,对应关系型数据库
    • (2)实体对象:被开发者用**@Entity注解**,且继承了OrmObject的类,对应关系型数据库中的表;
    • (3)对象数据操作接口:包括数据库操作的入口OrmContext类和谓词接口(OrmPredicate)等
  • 运行机制:
    • 实际是在关系型数据库 操作的基础上又实现了对象关系映射等特性
  • 对象数据对象操作接口:(不需要再和复杂的 SQL语句打交道,只需简单地操作实体对 象的属性和方法)

基于《2022重庆邮电大学-HarmonyOS移动应用开发》的学习【6-11】-开源基础软件社区

  • ORM开发步骤:
    • (1)创建数据库(定义一个表示数据库的类,继承OrmDatabase,再通过 @Database注解内的entities属性指定哪些数据模型类属于这个数据库)
    • (2)创建数据表(创建一个继承了OrmObject并用**@Entity注解**的类,获取数据 库实体对象,也就是表的对象)
    • (3)初始化数据库连接(在应用启动时调用onStart()方法创建Data实例)
    • (4)数据库操作-OR Mapping(ORM)
      • query():该方法接收三个参数,分别是查询的目标路径,查询的列名,以及查询条 件
      • insert():该方法接收两个参数,分别是插入的目标路径和插入的数据值
      • delete():该方法用来执行删除操作
  • 数据服务端开发步骤:
    • (1)配置“build.gradle”文件
    • (2)创建数据库类并配置对应的属性(构建数据库)
    • (3)创建数据库实体类并配置对应的属性(构造数据库表)
    • (4)使用对象数据操作接口OrmContext创建数据库
    • (5)使用对象数据操作接口OrmContext对数据库进行增删改查、注册观察者、备份数据库等

(五)偏好文件

  • 轻量级偏好文件:主要提供轻量级Key-Value操作,支持本地应用存储少量数据,数据存储在本地文件中,同时也加载在内存中的
    • 访问速度更快、效率高
    • 非关系型数据库
    • 不宜存储大量数据
  • 基本概念:
    • Key-Value数据库:一种以键值对存储数据的一种数据库,类似Java中的map。Key是关 键字,Value是值。
    • 非关系型数据库:不采用关系模型来组织数据,数据之间无关系,扩展性好
    • 偏好数据:用户经常访问和使用的数据
  • 运行机制:
    • (1)借助DatabaseHelper API,应用可以将指定文件的内容加载到Preferences实例(每个文件最多只有一个Preferences实例)
    • (2)借助Preferences API,从Preferences实 例中读取数据或者将数据写入Preferences实例,通过flush或者flushSync将Preferences 实例持久化

基于《2022重庆邮电大学-HarmonyOS移动应用开发》的学习【6-11】-开源基础软件社区

  • 开发步骤:
    • (1)引入依赖包
    • (2)进行数据初始化
    • (3)初始化应用背景色(同步、异步)
    • (4)存储背景色(putSync(key,value)函数)
    • (5)清除背景色

(六)分布式数据库服务

  • 分布式数据库服务:
    • 通过结合帐号、应用和数据库三元组,分布式数据服务对属于不同的应用的数据进行隔离
    • 在通过可信认证的设备间,分布式数据服务支持应用数据相互同步
  • KV数据模型:是 一种NoSQL类型数据库,其数据以键值对的形式进行组织、索引和存储
    • KV数据模型适合不涉及过多数据关系和业务关系的业务数据存储,比SQL数据库存储拥 有更好的读写性能
    • 降低了数据库版本兼容和数据同步过程中冲 突解决的复杂度
  • 分布式数据库ACID特性:
    • 分布式数据库事务性(一次本地 事务的修改要么都同步成功,要么都同步失败)
    • 分布式数据库一致性(强一致性、 弱一致性、最终一致性)
  • 运行机制(五个部分):
    • (1) 服务接口
    • (2)服务组件
    • (3)存储组件
    • (4)同步组件
    • (5)通信适配层
  • 分布式数据服务架构:
    • (1)应用程序通过调用分布式数据服务接口实现分布式数据库创建、访问、订阅功能
    • (2)服 接口通过操作服务组件提供的能力,将数据存储至存储组件
    • (3)存储组件调用同步组件实 现将数据同步,同步组件使用通信适配层将数据同步至远端设备
    • (4)远端设备通过同步组 件接收数据,并更新至本端存储组件,通过服务接口提供给应用程序使用

基于《2022重庆邮电大学-HarmonyOS移动应用开发》的学习【6-11】-开源基础软件社区

  • 开发步骤:
    • (1)在config.json中添加permisssion权限
    • (2)创建分布式数据库管理器实例
    • (3)获取/创建单版本分布式数据库
    • (4)订阅分布式数据库变化
    • (5)将数据写入单版本分布式数据库
    • (6)同步数据到其他设备

(七)分布式文件服务

  • 分布式文件服务:为用户设备中的应用程序提供多设备之间的文件共享能力,支持相 同帐号下同一应用文件的跨设备访问
  • 分布式文件:分布式文件是指依赖于分布式文件系统,分散存储在多个用户设备上的文 件,应用间的分布式文件目录互相隔离,不同应用的文件不能互相访问
  • 运行机制:

基于《2022重庆邮电大学-HarmonyOS移动应用开发》的学习【6-11】-开源基础软件社区

(八)测一测

1.√

2.√

3.√

4.文件、关系型数据库、对线关系型数据库、用户偏好文件

5.×

6.√

7.√

8.√

八、HarmonyOS流转架构解析

(一)核心概念

  • 跨端迁移:一种实现用户应用程序流转的技术方案,指在A端运行的FA迁移到B端上,完 成迁移后, B端FA继续任务,而A端应用退出
  • 多端协同:一种实现用户应用程序流转的技术方案,指多端上的不同FA/PA同时运行、 或者交替运行实现完整的业务;或者,多端上的相同FA/PA同时运行实现完整的业务
  • 流转架构:在底层实现Ability(分布式操作的基本组件)跨设备的启动/关闭、连接及断开 连接以及迁移等能力,实现跨设备的组件管理
  • Ability的调度:启动和关闭、连接和断开连接、迁移能力

(二)流转架构

  • 流转架构的优势:
    • (1)统一流转管理UI,支持设备发现、选择以及任务管理
    • (2)支持远程服务调用等能力,可轻松设计业务
    • (3)支持多个应用同时进行流转
    • (4)支持不同形态设备,如手机、平板、TV、手表等
  • 流转核心模块:
    • 流转任务管理服务
    • 分布式任务调度
    • 分布式安全
    • 分布式软总线

基于《2022重庆邮电大学-HarmonyOS移动应用开发》的学习【6-11】-开源基础软件社区

  • 跨端迁移关键流程:
    • (1)流转准备:设备A上的应用向流转任务管理服务注册一个流转回调
    • (2)流转开始:设备A上的应用通过调用分布式任务调度的能力,实现应用迁移
      • (2.1)确认当前FA是否可以开始迁移(的onStartContinuation()方法)
      • (2.2)便保存迁移后恢复状态必须的数据(onSaveData()方法)
      • (2.3)传递设备A上FA 保存的数据(onRestoreData()方法)
      • (2.4)通知应用迁移成功(onCompleteContinuation()方法)

基于《2022重庆邮电大学-HarmonyOS移动应用开发》的学习【6-11】-开源基础软件社区

  • 多端协同步骤:
    • (1)流转准备:设备A上的应用向流转任务管理服务注册一个流转回调
    • (2)流转进行:设备A上的应用通过调用分布式任务调度的能力。向设备B的应用发起多端协同。流转中将流转状态上报到流转任务管理服务。
    • (3)流转结束:用户通过设备A的流转任务管理界面结束流转。

基于《2022重庆邮电大学-HarmonyOS移动应用开发》的学习【6-11】-开源基础软件社区

(三)FA迁移过程

  • 分布式任务调度的六种能力:
    • 启动远程FA(startAbility(Intent intent)接口)
    • 启动远程PA(startAbility(Intent intent)接口)
    • 关闭远程PA
    • 连接远程PA(connectAbility(Intent intent, IAbilityConnection conn)接口)
    • 断开连接远程PA
    • FA跨设备迁移(continueAbility()接口)

(四)跨端迁移功能开发

HarmonyOS官方文档-跨端迁移功能实例

  • 主要步骤:
    • (1)设备A上的Page请求迁移
    • (2)HarmonyOS处理迁移任务,并回调设备A上Page的保存数据方法,用于保存迁移必须的数据
    • (3)HarmonyOS在设备B上启动同一个Page,并回调其恢复数据方法

(五)多端协同功能开发

HarmonyOS官方文档-多端协同实例

  • 场景与例子:手机充当电视机遥控器

(六)测一测

1.√

2.流转任务管理服务、分布式任务调度、分布式安全、分布式软总线

3.√

4.√

5.√

6.√

7.standard、singleton

8.√

九、HarmonyOS传感器和媒体管理

(一)普通传感器分类

  • 根据传感器的用途,可以将传感器分为六大类:
    • 运动类传感器(加速度、重力、陀螺仪、计步器)
    • 环境类传感器
    • 方向类 传感器
    • 光线类传感器
    • 健康类传感器
    • 其他类传感器(如霍尔传感器)

基于《2022重庆邮电大学-HarmonyOS移动应用开发》的学习【6-11】-开源基础软件社区

(二)工作原理

  • HarmonyOSOpenHarmony传感器包含如下四个模块:
    • (1)Sensor API(基础API)
    • (2)Sensor Framework(实现与SensorService的通信)
    • (3)Sensor Service(层数据接收、解析、分发,前后台的策略管控,对设备Sensor的管理;Sensor权限管控)
    • (4)HD_IDL层(对不同的FIFO、频率进行策略选择及不同设备适配)

基于《2022重庆邮电大学-HarmonyOS移动应用开发》的学习【6-11】-开源基础软件社区

(三)普通传感器调用

  • 普通传感器调用步骤:
    • (1)获取待订阅数据的传感器
    • (2)创建传感器回调
    • (3)订阅传感器数据
    • (4)接收并处理传感器数据
    • (5)取消订阅传感器数据

(四)相机调用

  • 相机:HarmonyOS相机模块支持相机业务的开发,开发者可以通过已开放的接口实现相 机硬件的访问、操作和新功能开发,最常见的操作如:预览、拍照、连拍和录像等。(一个页面仅支持一个camera组件,提供预览、拍照功能。)
    • 相机静态能力
    • 物理相机
    • 逻辑相机
    • 帧捕获

(五)GPS调用

  • 当用户处于这些丰富的使用场景中时,系统的位置能力可以提供实时准确的位置数据。 对于开发者,设计基于位置体验的服务,也可以使应用的使用体验更贴近每个用户。
  • 当应用在实现基于设备位置的功能时,如:驾车导航,记录运动轨迹等,可以调用该模 块的API接口,完成位置信息的获取
  • 基本概念:位置能力用于确定用户设备在哪里,系统使用位置坐标标示设备的位置,并用多种定位 技术提供服务,如GNSS定位基站定位WLAN/蓝牙定位(基站定位、WLAN/蓝牙定 位后续统称“网络定位技术”)。通过这些定位技术,无论用户设备在室内或是户外, 都可以准确地确定设备位置
    • 坐标、GNSS定位、基站定位、WLAN/蓝牙定位
  • 运作机制:
    • 需要用户进行确认并主动开启位置开关。如
    • 设备位置信息属于用户敏感数据,所以即使用户已经开启位置开关,应用在获取设备位 置前仍需向用户申请位置访问权限。
  • 获取设备的位置信息:
    • 开发者可以调用HarmonyOS位置相关接口,获取设备实时位置,或者最近的历史位置
    • 对于位置敏感的应用业务,建议获取设备实时位置信息
  • 开发步骤:
    • (1)设置权限
    • (2)要引入头文件system.geolocation’,获取位置管理对象 geolocation’
    • (3)在页面初始化回调函数或自定义函数中调用该对象的方法getLocation来获取位置信息

(六)测一测

1.运动类传感器、环境类传感器、方向类传感器、光线类传感器

2.√

3.√

4.×

5.Sensor API、Sensor Framework、Sensor Service、HD_IDL层

6.camera

7.×

8.√

十、HarmonyOS原子化服务

(一)HarmonyOS原子化服务定义

  • 原子化服务:是有独立入口的(用户可通过点击方式直接触发)、免安装的(无需显式安装,由系统程序框架后台安装后即 可使用)、可为用户提供一个或多个便捷服务的用户应用程序形态
  • 原子化服务由1个或多个HAP包组成,1个HAP包对应1个FA或1个PA。每个FA或PA均可独立运行,完成1个特定功能;1个或多个功能(对应FA或PA)完成1个特定的便捷服务
  • 原子化服务特性:
    • 随处可及(服务发现、智能推荐)
    • 服务直达(免安装、服务卡片)
    • 跨设备(支持多端、 支持跨设备分享、支持跨端迁移和协同)

(二)原子化服务体验

  • 原子化服务中心:用户提供统一的原子化服务查看、搜索、收藏和管理功能
  • 原子化服务流转的触发方式有系统推荐流转用户手动流转
  • 原子化服务流转技术方案:
    • (1)跨端迁移:指在A端运行的用户应用程序,迁移到B端上并从迁移时刻A端状态继续运行,然后 A端用户应用程序退出
    • (2)多端协同:指多端上的不同FA/PA同时运行、或者接替运行实现完整的业务。或者多端上的相 同FA/PA同时运行实现完整的业务
  • 原子化服务分享:通过分享的方式,将原子化服务分享到其它设备上,用户确认后可直接免安装启动服务

(三)原子化服务开发基础

1.开发总体要求

  • 免安装的HAP包不能超过10MB
  • 通过DevEco Studio工程向导创建原子化服务,Project Type字段选择“Service”
  • 版本更新时要保持免安装属性
  • HarmonyOS 2.0以上版本

2.服务卡片定义

  • 服务卡片(以下简称“卡片”)是FA的一种界面展示形式,将FA的重要信息或操作前置 到卡片,以达到服务直达,减少体验层级的目的
  • 服务卡片包含三方:
    • 卡片提供方
    • 卡片使用方
    • 卡片管理服务

3.运作机制

基于《2022重庆邮电大学-HarmonyOS移动应用开发》的学习【6-11】-开源基础软件社区

4.卡片提供方主要回调

基于《2022重庆邮电大学-HarmonyOS移动应用开发》的学习【6-11】-开源基础软件社区

5.JS卡片语法基础

  • 数据绑定、事件绑定

(四)原子化服务进阶

1.卡片结构目录

基于《2022重庆邮电大学-HarmonyOS移动应用开发》的学习【6-11】-开源基础软件社区

2.卡片资源访问

  • 卡片中的资源访问分为三类:JS模块资源,应用资源和系统资源。
    • 应用资源引用(css文件中,通过“@app.type.resource_id”;在hml和json文件中,通过“{{$r(‘app.type.resource_id’)}}”)
    • 系统资源(通过“@sys.type.resource_id”)

3.卡片配置文件

基于《2022重庆邮电大学-HarmonyOS移动应用开发》的学习【6-11】-开源基础软件社区

4.卡片实战

  • 主要步骤:
    • (1)新建卡片
    • (2)卡片内容刷新(updateForm(updateFormId, new FormBindingData(zsonObject))
    • (3)卡片页面跳转
    • (4)卡片消息传递
    • (5)卡片事件触发

(五)原子化服务分享

  • 原子化服务所提供的便捷服务,可以通过接入华为分享实现近距离快速分享,使便捷服务可以精准快速的推送至接收方,降低用户触达服务的成本,提升用户体验
  • 一般是服务端使用ServiceStub接口,客户端使用CallbackProxy接口,即“代理-桩”模 式

基于《2022重庆邮电大学-HarmonyOS移动应用开发》的学习【6-11】-开源基础软件社区

  • 开发步骤:
    • (1)集成IDL接口,用于建立分享方与华为分享的交互通道,完成后续服务分享过程
    • (2)在java目录的应用包下创建ShareFaManager类,用于管理分享方与华为分享的连接通道 和数据交互
    • (3)封装服务分享数据,调用ShareFaManager封装的接口完成服务的分享

(六)测一测

1.√

2.卡片提供方、卡片使用方、卡片管理服务

3.√

4.router事件、message事件

5.√

6.√

7.服务介绍信息、服务介绍图片、服务图标、服务名称

8.onTriggerFormEvent

十一、HarmonyOS网络与多线程

(一)Http接口调用

  • 使用Http接口访问数据的步骤:
    • (1)引入依赖(import http from '@ohos.net.http';)
    • (2)创建HttpRequest对象:该对象里面包括发起请求、中断请求、订阅/取消订阅Http Response Header 事件。每一个HttpRequest对象对应一个Http请求。如需发起多个Http 请求,须为每个Http请求创建对应HttpRequest对象(let httpRequest = http.createHttp();)
    • (3)设置请求报文参数HttpRequestOptions
    • (4)发起http请求:根据URL地址和相关配置项,发起Http网络请求,使用callback方式作为 异步方法
    • (5)返回结果HttpResponse:request方法回调函数的返回值类型

报文参数基于《2022重庆邮电大学-HarmonyOS移动应用开发》的学习【6-11】-开源基础软件社区

  • RequestMethod(报头)

基于《2022重庆邮电大学-HarmonyOS移动应用开发》的学习【6-11】-开源基础软件社区

(二)数据上传和下载

  • 任务操作步骤:
    • (1)引入依赖(import request from '@ohos.request';
    • (2)开启下载任务(download(config: DownloadConfig, callback: AsyncCallback): void)
    • (3)订阅下载进度(on(type: 'progress', callback: (receivedSize: number, totalSize: number) => void): void;

DownloadConfig基于《2022重庆邮电大学-HarmonyOS移动应用开发》的学习【6-11】-开源基础软件社区

(三)WebSocket连接

  • WebSocket是HTML5规范提出的一种协议,也是基于TCP协议的,和应用层Http协议是 并存的两种协议。HTML5 Web Sockets规范定义了Web Sockets API,支持页面使用 Web Socket协议与远程主机进行全双工的通信
  • 操作步骤:
    • (1)可以在JS中使用WebSocket建立服务器与客户端的双向连接,需要先通过 createWebSocket方法创建WebSocket对象
    • (2)然后通过connect方法连接到服务器
    • (3)当连接成功后,客户端会收到open事件的回调,之后客户端就可以通过send方法与服务器进 行通信。
    • (4)当服务器发信息给客户端时,客户端会收到message事件的回调。当
    • (5)客户端不要此连接时,可以通过调用close方法主动断开连接,之后客户端会收到close事件的回调

(四)多线程

  • 进程是具有一定独立功能的程序在某个数据集合上的一次运行活动,进程是操作系统进 行资源分配和调度(CPU,内存和I/O)的一个独立单位。
  • 线程是进程的一部分,是CPU 调度和分派的基本单位,一个进程可以拥有多个线程,它是比进程更小的能独立运行的 基本单位。线程自己基本上不拥有系统资源,只拥有一些在运行中必不可少的CPU资源 (如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所 拥有的全部资源(除了CPU之外的其他资源,如内存和I/O)
  • 线程的作用:在启动应用时,系统会为该应用创建一个称为**“主线程”**的执行线程。该线程随着应用 创建或消失,是应用的核心线程。UI界面的显示和更新等操作,都是在主线程上进行。 主线程又称UI线程,默认情况下,所有的操作都是在主线程上执行。如果需要执行比较 耗时的任务(如下载文件、查询数据库),可创建其他线程来处理
  • 线程的实现:TaskDispatcher是一个任务分发器,它是Ability分发任务的基本接口,隐藏任务所在线 程的实现细节。TaskDispatcher具有多种实现,每种实现对应不同的任务分发器
    • GlobalTaskDispatcher:全局并发任务分发器
    • ParallelTaskDispatcher:并发任务分发器
    • SerialTaskDispatcher:串行任务分发器
    • SpecTaskDispatcher:专有任务分发器
  • 进程调度方式:
    • 同步派发syncDispatch
    • 异步派发asyncDispatch

(五)测一测

1.×

2.√

3.√

4.GlobalTaskDispatcher、ParallelTaskDispatcher、SerialTaskDispatcher、SpecTaskDispatcher

5.×

6.√

7.√

8.√

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
HarmonyOS移动开发课程PPT(共11章).zip 58.9M 184次下载
5
收藏 6
回复
举报
回复
添加资源
添加资源将有机会获得更多曝光,你也可以直接关联已上传资源 去关联
    相关推荐