Android攻城狮学鸿蒙-配置
1、config.json配置
鸿蒙中的config.json应该类似于Android开发中Manifest.xml,可以进行页面的配置。根据顺序,会识别启动应用的时候,要打开哪个界面。

2、 Ability详解,以及与Android的Activity对比。
他人的学习文章连接,请点击
一个 HarmonyOS 应用可以包含多个 Ability,Ability 可以分为:
-
Feature Ability(简称 FA),有界面,也被称为元程序
-
Particle Ability(简称 PA),无界面,也被称为元服务
FA 类似于 Android 的 Activity ;PA 类似于 Android 的 Services。
FA 支持 Page Ability,代表了 UI 的能力:Page 模板是 FA 唯一支持的模板,用于提供与用户交互的能力。一个Page实例可以包含一组相关页面,每个页面用一个 AbilitySlice 实例表示。
PA 支持 Service Ability 和 Data Ability:
-
Service 模板:用于提供后台运行任务的能力,提供应用服务,例如播放音乐等。
-
Data 模板:用于对外部提供统一的数据访问抽象,提供了统一的数据访问接口,方便 FA 的统一调用,例如对本地文件的读取。
(那么FA与PA如何交互呢?我也不太清楚,继续学习。 -- 在下加的。)
使用 Ability 时必须在配置文件 config.json 中注册该 Ability ,设置相应的属性,该文件存储在每个应用程序的 Java 代码的根目录中。
在 Java 中,Ability 是一个类。事实上,鸿蒙应用程序的开发就是对 Ability 进行继承并进行应用扩展。所有的应用程序的功能最终必须要体现在开发者所创建的 Ability 的子类中。
①Page Ability
Page Ability 是 Feature Ability 唯一支持的模板。用于提供与用户的交互能力,其实就是页面的父级。
一个 Page 可以由一个或多个 AbilitySlice 构成,AbilitySlice 是指应用的单个页面及其控制逻辑的总和。
官方认为当一个 Page 由多个 AbilitySlice 共同构成时,这些 AbilitySlice 页面提供的业务能力应具有高度相关性。
在配置文件(config.json)中注册 Ability 时,可以通过配置 Ability 元素中的 “type” 属性来指定 Ability 模板类型,示例如下:

(下边这张图,在下不是非常明白吧。感觉就像是类似于Android的activity栈?)

②Page Ability 的生命周期
Ability 生命周期介绍(Ability Life Cycle)是 Ability 被调度到 INACTIVE、ACTIVE、BACKGROUND 等各个状态的统称(主要涉及 PageAbility 类型和 ServiceAbility 类型的 Ability)。
PageAbility 类型的 Ability 生命周期流转如下图所示:

主要生命周期如下:
-
首先初始化 Ability,初始化完毕后状态是 INITIAL 状态
-
初始化完成后, 会调用 onStart() 方法,初始化 UI 界面中使用到的控件和变量, 执行完毕后状态变为 INACTIVE 状态
-
快要显示时,会调用 onActive() 方法,状态变为 ACTIVE 状态
-
如果由于某些原因,该 Page Ability 失去焦点,进入后台,如弹出对话框,另一个 Page Ability 前台显示,会回调 onInactive() 方法,状态变为 INACTIVE 状态
-
窗口彻底不显示,但是还处于后台状态,会回调 onBackground() 方法,状态变 BACKGROUND 状态
有几种特殊情况:
-
如果当前处于 INACTIVE 状态,用户返回 Page Ability,则回调 onActive() 方法,进入 ACTIVE 状态
-
如果当前的 Page Ability 处于 BACKGROUND 状态,当用户从后台返回前台时, 会回调 onForeground() 方法,状态变为 INACTIVE 状态
-
如果当前的 Page Ability 处于 BACKGROUND 状态,当该 Ability 彻底销毁,正在结束,因内存不足终止,用户重新进入该界面时,会回调 onStop() 方法,状态变为 INITIAL 状态
生命周期图如下:

③Service Ability
--- 应该是对应着Android的Service。---
Service Ability 是 Particle Ability 支持的模板之一。用于后台运行任务(如执行音乐播放、文件下载等),但不提供用户交互界面。
Service 可由其他应用或 Ability 启动,即使用户切换到其他应用,Service 仍将在后台继续运行。
Service 是单实例的。在一个设备上,相同的Service 只会存在一个实例。如果多个 Ability 共用这个实例,只有当与 Service 绑定的所有 Ability 都退出后,Service 才能够退出。
由于 Service 是在主线程里执行的,因此,如果在 Service 里面的操作时间过长,开发者必须在 Service 里创建新的线程来处理,防止造成主线程阻塞,应用程序无响应。
④sevice ability 生命周期
与 Page 类似,Service 也拥有生命周期,如图所示:

根据调用方法的不同,其生命周期有以下两种路径:
-
启动 Service:该 Service 在其他 Ability 调用startAbility()时创建,然后保持运行。其他 Ability 通过调用stopAbility()来停止 Service,Service 停止后,系统会将其销毁。
-
连接 Service:该 Service 在其他 Ability 调用 connectAbility() 时创建,客户端可通过调用 disconnectAbility() 断开连接。多个客户端可以绑定到相同 Service,而且当所有绑定全部取消后,系统即会销毁该 Service。
connectAbility() 也可以连接通过 startAbility() 创建的 Service 。在配置文件中,“module > abilities”字段下对当前 Service 做如下配置:
{"module": {..."abilities": [{..."name": ".ServiceAbility","type": "service","visible": true,...}]...}...
}
⑤Data Ability
Data Ability 是 Particle Ability 支持的模板之一。用于应用管理其自身和其他应用存储数据的访问,并提供与其他应用共享数据的方法。
Data 既可用于同设备不同应用的数据共享,也支持跨设备不同应用的数据共享。
数据的存放形式多样,可以是数据库,也可以是磁盘上的文件。Data 对外提供对数据的增、删、改、查,以及打开文件等接口,这些接口的具体实现由开发者提供。
⑥URI 介绍
Data 的提供方和使用方都通过 URI(Uniform Resource Identifier)来标识一个具体的数据,例如数据库中的某个表或磁盘上的某个文件。
URI 的组成图如下:

HarmonyOS 的 URI 仍基于 URI 通用标准,格式如下:
-
scheme:协议方案名,固定为“dataability”,代表 Data Ability 所使用的协议类型。
-
authority:设备 ID。如果为跨设备场景,则为目标设备的 ID;如果为本地设备场景,则不需要填写。
-
path:资源的路径信息,代表特定资源的位置信息。
-
query:查询参数。
-
fragment:可以用于指示要访问的子资源。

URI 示例:
跨设备场景:
dataability://device_id/com.domainname.dataability.persondata/person/10本地设备:
dataability:///com.domainname.dataability.persondata/person/10
在配置文件中,“module > abilities”字段下对当前 Data 做如下配置:
{"module": {..."abilities": [{..."type": "data"...}]...}...
}
相关文章:
Android攻城狮学鸿蒙-配置
1、config.json配置 鸿蒙中的config.json应该类似于Android开发中Manifest.xml,可以进行页面的配置。根据顺序,会识别启动应用的时候,要打开哪个界面。 2、 Ability详解,以及与Android的Activity对比。 他人的学习文章连接&…...
SpringBoot 接口 字节数组直接显示为图片
源码: import java.io.ByteArrayOutputStream; import javax.imageio.ImageIO; import org.springframework.web.bind.annotation.RequestMapping;/*** 获取二维码图像* 二维码支付** param price 金额* return 二维码图像* throws IOException IOException*/ Requ…...
黄金票据与白银票据
文章目录 黄金票据与白银票据1. 背景2. 具体实现2.1 Kerberos协议认证流程 3. 黄金票据3.1 条件3.2 适用场景3.3 利用方式 4. 白银票据4.1 条件4.2 适用场景4.3 利用方式 5. 金票和银票的区别5.1 获取的权限不同5.2 认证流程不同5.3 加密方式不同 6. 经典面试题6.1 什么是黄金票…...
发稿渠道和发布新闻的步骤和技巧,收藏!
在现代社会中,新闻的发布和传播起着至关重要的作用。通过新闻,人们可以获取及时的信息,了解社会动态和事件发展。而对于企业和组织来说,通过新闻发布可以宣传品牌、推广产品,增加曝光度,吸引目标受众的关注…...
【Leetcode】204. 计数质数
一、题目 1、题目描述 给定整数 n ,返回 所有小于非负整数 n 的质数的数量 。 示例1: 输入:n = 10 输出:4 解释:小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。示例2: 输入:n = 0 输出:0示例3: 输入:n = 1 输出:0提示: 0 <= n <= 5 * 1062、基础框架…...
LRU自定义最近最少使用-java实现
LRU自定义最近最少使用 一:leetCode 题目二:思路三:上代码3.1:类代码3.2: 测试代码 一:leetCode 题目 题目链接: 题目链接:146.LRU缓存 为什么要写博客记录下呢? 1.这个…...
spring:详解spring boot
spring的优缺点 虽然Spring的组件代码是轻量级的,但它的配置却是重量级的。一开始,Spring用XML配置,而且是很多XML配 置。Spring 2.5引入了基于注解的组件扫描,这消除了大量针对应用程序自身组件的显式XML配置。Spring 3.0引入 了…...
大数据Doris(八):启动FE步骤
文章目录 启动FE步骤 一、配置环境变量 二、创建doris-mate...
vuex常用属性
以下是Vuex常用属性: state:存储应用程序状态的数据 getters:获取应用程序状态的计算属性 mutations:修改应用程序状态的同步方法 actions:修改应用程序状态的异步方法 modules:将应用程序状态分为模块…...
M-LVDS收发器MS2111可pin对pin兼容SN65MLVD206
MS2111 是多点低压差分(M-LVDS)线路驱动器和接收器,经过优化可在高达 200 Mbps 的信令速率下运行。可pin对pin兼容SN65MLVD206。所有部件均符合 M-LVDS 标准 TIA / EIA-899。该驱动器输出已设计为支持负载低至 30Ω 的多点总线。 MS2111 的接收器属于 Type-2, 它们可…...
JVM-Java字节码的组成部分
Java字节码文件是一种由Java编译器生成的二进制文件,用于在Java虚拟机(JVM)上执行Java程序。字节码文件的组成可以分为以下几个主要部分: 基本信息: 魔数(Magic Number):前4个字节的…...
C# 图像灰化处理方法及速度对比
图像处理过程中,比较常见的灰化处理,将彩色图像处理为黑白图像,以便后续的其他处理工作。 在面对大量的图片或者像素尺寸比较大的图片的时候,处理速度和性能就显得非常重要,下面分别用3种方式来处理图像数据࿰…...
【嵌入式】STM32F031K4U6、STM32F031K6U6、STM32F031K6T6主流ARM Cortex-M0基本型系列MCU规格参数
一、电路原理图 【嵌入式】STM32F031K4U6、STM32F031K6U6、STM32F031K6T6主流ARM Cortex-M0基本型系列MCU —— 明佳达 二、规格参数 1、STM32F031K4U6(16KB)闪存 32UFQFPN 核心处理器:ARM Cortex-M0 内核规格:32 位单核 速度&a…...
04_学习springdoc与oauth结合_简述
文章目录 1 前言2 基本结构3 需要做的配置 简述4 需要做的配置 详述4.1 backend-api-gateway 的配置4.1.1 application.yml 4.2 backend-film 的配置4.2.1 pom.xml 引入依赖4.2.2 application.yml 的配置4.2.3 Spring Security 资源服务器的配置类 MyResourceServerConfig4.2.4…...
【设计模式】单例模式的7种实现方法
一、饿汉式-线程安全 线程安全,但无法实现实例懒加载策略 /*** 饿汉式* author CC* version 1.0* since2023/10/12*/ public class Singleton {private static final Singleton singleton new Singleton();private Singleton() {}public static Singleton getSin…...
AlphaPose Pytorch 代码详解(一):predict
前言 代码地址:AlphaPose-Pytorch版 本文以图像 1.jpg(854x480)为例对整个预测过程的各个细节进行解读并记录 python demo.py --indir examples/demo --outdir examples/res --save_img1. YOLO 1.1 图像预处理 cv2读取BGR图像 img [480,…...
日常学习记录随笔-zabix实战
使用zabix结合 实现一套监控报警装置 不管是web开发还是大数据开发 我们的离线项目还是实时项目也好,都需要把我们的应用提交到我们服务器或者容器中去执行 整个应用过程中怎么保证线上整体环境的稳定运行 监控很重要 现在比较主流的就是 普罗米修斯以及zabix 我要做…...
vw+rem自适应布局
开发过程中,我们希望能够直接按照设计图来开发,不管设计图是两倍还是三倍图,能够直接写设计图尺寸而不需要换算,同时有高质的设计图还原度,想想都比较爽。 这里介绍一种使用vw和rem来布局的方案。 该方案思路主要是&am…...
【MySql】mysql之MHA高可用配置及故障切换
一、MHA概念 MHA(Master High Availability)是一套优秀的Mysql高可用环境下故障切换和主从复制的软件。 MHA的出现就是解决Mysql单点的问题。 Mysql故障切换过程中,MHA能做到0-30秒内自动完成故障切换操作。 MHA能在故障切换的过程中最大程…...
如何在 Spring Boot 中进行数据备份
在Spring Boot中进行数据备份 数据备份是确保数据安全性和可恢复性的关键任务之一。Spring Boot提供了多种方法来执行数据备份,无论是定期备份数据库,还是将数据导出到外部存储。本文将介绍在Spring Boot应用程序中进行数据备份的不同方法。 方法1: 使用…...
【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型
摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...
进程地址空间(比特课总结)
一、进程地址空间 1. 环境变量 1 )⽤户级环境变量与系统级环境变量 全局属性:环境变量具有全局属性,会被⼦进程继承。例如当bash启动⼦进程时,环 境变量会⾃动传递给⼦进程。 本地变量限制:本地变量只在当前进程(ba…...
工业安全零事故的智能守护者:一体化AI智能安防平台
前言: 通过AI视觉技术,为船厂提供全面的安全监控解决方案,涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面,能够实现对应负责人反馈机制,并最终实现数据的统计报表。提升船厂…...
k8s从入门到放弃之Ingress七层负载
k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...
如何在看板中有效管理突发紧急任务
在看板中有效管理突发紧急任务需要:设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP(Work-in-Progress)弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中,设立专门的紧急任务通道尤为重要,这能…...
分布式增量爬虫实现方案
之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面,避免重复抓取,以节省资源和时间。 在分布式环境下,增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路:将增量判…...
Linux --进程控制
本文从以下五个方面来初步认识进程控制: 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程,创建出来的进程就是子进程,原来的进程为父进程。…...
Yolov8 目标检测蒸馏学习记录
yolov8系列模型蒸馏基本流程,代码下载:这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中,**知识蒸馏(Knowledge Distillation)**被广泛应用,作为提升模型…...
【LeetCode】算法详解#6 ---除自身以外数组的乘积
1.题目介绍 给定一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O…...
从零开始了解数据采集(二十八)——制造业数字孪生
近年来,我国的工业领域正经历一场前所未有的数字化变革,从“双碳目标”到工业互联网平台的推广,国家政策和市场需求共同推动了制造业的升级。在这场变革中,数字孪生技术成为备受关注的关键工具,它不仅让企业“看见”设…...
