一、简介

1.1 什么是页面

信息以页面信息组织,信息页面由语言来实现,在各个信息页面之间建立超文本链接以便浏览,这就是页面。页面一般包括:文本、图像、表格、超链接等基本元素。

2.1 HarmonyOS(鸿蒙)中的页面

当我们打开手机App之后看到的都是页面!

#yyds干货盘点#HarmonyOS(鸿蒙)基础——页面_免安装#yyds干货盘点#HarmonyOS(鸿蒙)基础——页面_免安装_02

在HarmonyOS中,一个页面可以被当做一个Ability,更准确的说是Page Ability中的AbilitySlice(指应用的单个页面及其控制逻辑的总和),这里先简单介绍Ability。

二、Ability

2.1 简介

Ability是应用所具备能力的抽象(我感觉也可以理解为模板,模块),也是应用程序的重要组成部分。一个应用可以具备多种能力(即可以包含多个Ability),HarmonyOS支持应用以Ability为单位进行部署。

Ability分为两种:

  1. FA(Feature Ability)
  2. PA(Particle Ability)

Ability类型

支持模板

描述

Feature Ability

Page Ability

Page模板:用于提供与用户交互的能力。一个Page实例可以包含一组相关页面,每个页面用一个AbilitySlice实例表示。

Particle Ability

Service Ability和Data Ability

Service模板:用于提供后台运行任务的能力。

Data模板:用于对外部提供统一的数据访问抽象。

2.2 Page Ability

Page Ability是 Feature Ability唯一支持的模板。

用于提供与用户的交互能力,其实就是页面的父级。一个Page可以由一个或多个AbilitySlice构成,AbilitySlice是指应用的单个页面及其控制逻辑的总和。官方认为当一个Page由多个AbilitySlice共同构成时,这些AbilitySlice页面提供的业务能力应具有高度相关性。

#yyds干货盘点#HarmonyOS(鸿蒙)基础——页面_安装包_03


HarmonyOS支持不同Page之间的跳转,并可以指定跳转到目标Page中某个具体的AbilitySlice。

2.3 Service Ability

Service Ability是 Particle Ability支持的模板之一。

用于后台运行任务(如执行音乐播放、文件下载等),但不提供用户交互界面。Service可由其他应用或Ability启动,即使用户切换到其他应用,Service仍将在后台继续运行。

Service是单实例的。在一个设备上,相同的Service只会存在一个实例。如果多个Ability共用这个实例,只有当与Service绑定的所有Ability都退出后,Service才能够退出。由于Service是在主线程里执行的,因此,如果在Service里面的操作时间过长,开发者必须在Service里创建新的线程来处理,防止造成主线程阻塞,应用程序无响应。

如下是HarmonyOS线程间通信开发概述官网地址:

​https://developer.harmonyos.com/cn/docs/documentation/doc-guides/inter-thread-overview-0000000000038958​


2.4 Data Ability

Data Ability是 Particle Ability支持的模板之一。

用于应用管理其自身和其他应用存储数据的访问,并提供与其他应用共享数据的方法。Data既可用于同设备不同应用的数据共享,也支持跨设备不同应用的数据共享。数据的存放形式多样,可以是数据库,也可以是磁盘上的文件。Data对外提供对数据的增、删、改、查,以及打开文件等接口,这些接口的具体实现由开发者提供。

三、HarmonyOS页面的设计

3.1 原子化服务与HAP简介

HarmonyOS中的应用与传统App应用有一个很大的亮点,HarmonyOS提供了一种面向未来的服务提供方式,原子化服务。

原子化服务可以免安装(无需显示安装,由系统后台按需主动安装非常方便),它支持运行在1+8+N设备上。

原子化服务与传统的App应用对比如下:

项目

原子化服务

传统App应用

件包形态

APP Pack(.app)

APP Pack(.app)

分发平台

由原子化服务平台(Huawei Ability Gallery)管理和分发

由应用市场(AppGallery)管理和分发

安装后有无桌面icon

无桌面icon,但可手动添加到桌面,显示形式为服务卡片

有桌面icon

HAP包免安装要求

所有HAP包(包括Entry HAP和Feature HAP)均需满足免安装要求

所有HAP包(包括Entry HAP和Feature HAP)均为非免安装的

官网地址:

​https://developer.harmonyos.com/cn/docs/documentation/doc-guides/atomic-service-definition-0000001090840664​


原子化服务由HAP包组成,HAP是Ability的部署包,HarmonyOS应用代码围绕Ability组件展开。一个HAP是由代码、资源、第三方库及应用配置文件组成的模块包,可分为entry和feature两种模块类型。

详细内容可以查看官网:

​https://developer.harmonyos.com/cn/docs/documentation/doc-guides/basic-fundamentals-0000000000041611​

一个原子化服务可以有一个或者多个HAP组成,而一个HAP对应1个FA或者1个PA,每个FA或PA均可独立运行,完成1个特定功能;1个或多个功能(对应FA或PA)完成1个特定的便捷服务。

所以HarmonyOS的App安装包的结构示意图如下:

#yyds干货盘点#HarmonyOS(鸿蒙)基础——页面_安装包_04

3.2 可分可合思想

根据3.1中HarmonyOS的App安装包的结构可知,一个HarmonyOS安装包可以由任意需要的一个或者多个HAP组成,这里的组成是可以选择的,可以根据用户需求和硬件设备做合理的选择进行应用组合。

打个比方使用搭载HarmonyOS系统的电视和手机分别可以具有如下的一些功能:

HarmonyOS电视机:

#yyds干货盘点#HarmonyOS(鸿蒙)基础——页面_安装包_05

HarmonyOS手机:

#yyds干货盘点#HarmonyOS(鸿蒙)基础——页面_官网_06

电视机没有短信和通话的功能,但是它拥有控制频道切换的功能,因此可以安装控制频道.HAP;而手机拥有短信和通话的功能,因此可以安装短信.HAP和通过.HAP。两者都拥有游戏的功能,因此均可以安装游戏.HAP。因此HarmonyOS的HAP安装包,可以根据用户的实际需求或者硬件设施进行合理的安装,实现安装包的可分可合思想。

针对不同的功能,建议统一写入同一个HAP中,比如短信.HAP,这样可以减少用户使用某一个特定功能的时候,系统下载安装包的复杂度或者用户字段安装的复杂度。

3.3 HAP中的Ability

针对上面的游戏.HAP,比如说是男人就下一百层,我们会开发一个Ability,它会存在很多子功能,比如登录、注册、游戏、装备、聊天、等等。这些不同的功能都可以整合到不同的AbilitySlice中,一个AbilitySlice对应一个页面。

游戏.HAP的Ability与其AbilitySlice关系图如下:

#yyds干货盘点#HarmonyOS(鸿蒙)基础——页面_官网_07

登录、注册、游戏、装备、聊天、等等AbilitySlice统一加入一个Ability中,不同的AbilitySlice之间可以实现跳转,最终打包成一个可以运行的游戏.HAP