HarmonyOS应用开发学习笔记 应用上下文Context 获取文件夹路径
1、 HarmoryOS Ability页面的生命周期
2、 @Component自定义组件
3、HarmonyOS 应用开发学习笔记 ets组件生命周期
4、HarmonyOS 应用开发学习笔记 ets组件样式定义 @Styles装饰器:定义组件重用样式 @Extend装饰器:定义扩展组件样式
5、HarmonyOS 应用开发学习笔记 state状态管理概述
6、HarmonyOS应用开发学习笔记 包名、icon图标,应用名修改 UIAbility组件介绍、UIAbility启动模式、UIAbility组件基本用法
7、HarmonyOS应用开发学习笔记 UIAbility组件与UI的数据同步 EventHub、globalThis
8、HarmonyOS应用开发学习笔记 UIAbility组件间交互 UIAbility启动,页面跳转结果回调
概叙
Context是应用中对象的上下文,其提供了应用的一些基础信息,例如resourceManager(资源管理)、applicationInfo(当前应用信息)、dir(应用开发路径)、area(文件分区)等,以及应用的一些基本方法,例如createBundleContext()、getApplicationContext()等。UIAbility组件和各种ExtensionAbility派生类组件都有各自不同的Context类。分别有基类Context、ApplicationContext、AbilityStageContext、UIAbilityContext、ExtensionContext、ServiceExtensionContext等Context。
- 各类Context的继承关系

| 项目 | 描述 |
|---|---|
| 获取UIAbilityContext | let abilityStageContext = this.context; |
| 获取AbilityStageContext | let abilityStageContext = this.context; |
| 获取ApplicationContext | let applicationContext = this.context.getApplicationContext(); |
Context的典型使用场景
1、 获取应用文件路径
import UIAbility from '@ohos.app.ability.UIAbility';export default class EntryAbility extends UIAbility {onCreate(want, launchParam) {let cacheDir = this.context.cacheDir;let tempDir = this.context.tempDir;let filesDir = this.context.filesDir;let databaseDir = this.context.databaseDir;let bundleCodeDir = this.context.bundleCodeDir;let distributedFilesDir = this.context.distributedFilesDir;let preferencesDir = this.context.preferencesDir;// ...}
}

- 通过ApplicationContext获取应用级别的应用文件路径,此路径是应用全局信息推荐的存放路径,这些文件会跟随应用的卸载而删除。
| 项目 | 描述 |
|---|---|
| bundleCodeDir | <路径前缀>/el1/bundle/ |
| cacheDir | <路径前缀>/<加密等级>/base/cache/ |
| filesDir | <路径前缀>/<加密等级>/base/files/ |
| preferencesDir | <路径前缀>/<加密等级>/base/preferences/ |
| tempDir | <路径前缀>/<加密等级>/base/temp/ |
| databaseDir | <路径前缀>/<加密等级>/database/ |
| distributedFilesDir | <路径前缀>/el2/distributedFiles/ |
- 通过AbilityStageContext、UIAbilityContext、ExtensionContext获取HAP级别的应用文件路径。此路径是HAP相关信息推荐的存放路径,这些文件会跟随HAP的卸载而删除,但不会影响应用级别路径的文件,除非该应用的HAP已全部卸载。
| 项目 | 描述 |
|---|---|
| bundleCodeDir | <路径前缀>/el1/bundle/ |
| cacheDir | <路径前缀>/<加密等级>/base/haps//cache/ |
| filesDir | <路径前缀>/<加密等级>/base/haps//files/ |
| preferencesDir | <路径前缀>/<加密等级>/base/haps//preferences/ |
| tempDir | <路径前缀>/<加密等级>/base/haps//temp/ |
| databaseDir | <路径前缀>/<加密等级>/database// |
| distributedFilesDir | <路径前缀>/el2/distributedFiles// |
2、 获取和修改加密分区
上一个场景中,引入了加密等级的概念,通过对Context的area属性的读写来实现获取和设置当前加密分区,支持如下两种加密等级:
- AreaMode.EL1:设备级加密区,设备开机后可访问的数据区。
- AreaMode.EL2:用户级加密区,设备开机,首次输入密码后才能够访问的数据区。
import UIAbility from '@ohos.app.ability.UIAbility';export default class EntryAbility extends UIAbility {onCreate(want, launchParam) {// 存储普通信息前,切换到EL1设备级加密if (this.context.area === 1) { // 获取areathis.context.area = 0; // 修改area}// 存储普通信息// 存储敏感信息前,切换到EL2用户级加密if (this.context.area === 0) { // 获取areathis.context.area = 1; // 修改area}// 存储敏感信息}
}
相关文章:
HarmonyOS应用开发学习笔记 应用上下文Context 获取文件夹路径
1、 HarmoryOS Ability页面的生命周期 2、 Component自定义组件 3、HarmonyOS 应用开发学习笔记 ets组件生命周期 4、HarmonyOS 应用开发学习笔记 ets组件样式定义 Styles装饰器:定义组件重用样式 Extend装饰器:定义扩展组件样式 5、HarmonyOS 应用开发…...
http状态码对照表
状态码含义100客户端应当继续发送请求。这个临时响应是用来通知客户端它的部分请求已经被服务器接收,且仍未被拒绝。客户端应当继续发送请求的剩余部分,或者如果请求已经完成,忽略这个响应。服务器必须在请求完成后向客户端发送一个最终响应。…...
金三银四-JVM核心知识高频面试题
又要快到一年一度的金三银四,开始复习啦~! 每天一点点。。 目录 一、JVM中的垃圾收集器有哪些,它们的工作原理是什么? 二、JVM中的类加载器有哪些,它们各自的作用是什么? 三、JVM中垃圾回收的…...
【GitHub项目推荐--谷歌大神又一开源代码调试神器】【转载】
如果调试是 Debug 的必经之路,那么编程应该将它考虑在内。今天我就和大家分享一个代码调试神器 - Cyberbrain。 Cyberbrain是一个免费开源的 Python 代码调试解决方案,它可视化程序执行以及每个变量的变化方式,让程序员免受调试之苦。主要具有…...
Ubuntu pip换源
在 Ubuntu 上使用 pip 更改软件包的下载源可以通过修改 pip.conf 文件来完成。 首先打开终端(Terminal)。 输入以下命令创建或编辑 pip.conf 文件: sudo nano /etc/pip.conf如果提示需要管理员密码,则输入密码并按 Enter 键确认。…...
解锁前端新潜能:如何使用 Rust 锈化前端工具链
前言 近年来,Rust的受欢迎程度不断上升。首先,在操作系统领域,Rust 已成为 Linux 内核官方认可的开发语言之一,Windows 也宣布将使用 Rust 来重写内核,并重写部分驱动程序。此外,国内手机厂商 Vivo 也宣布…...
vite前端工具链,为开发提供极速响应
一、概念 Vite是一个高性能的分布式智能合约平台。它使用了一种名为“异步架构”的设计,能够支持高吞吐量和低延迟的交易处理。Vite采用了基于DAG(有向无环图)的账本结构,可以实现并行处理多个交易,并且具有快速确认的…...
linux系统nginx做负载均衡
负载均衡 作用upstream配置负载均衡算法配置分类热备轮询加权轮询ip_hash 负载均衡配置状态参数nginx配置7层协议及4层协议七层协议做负载均衡四层协议做负载均衡 会话保持ip_hashsticky_cookie_insertjvm_route 作用 负载均衡(Load Balance,简称 LB&am…...
Tensor Core的一些概念理解
英伟达的GPU产品架构发展如下图,Tensor Core是从2017年的Volta架构开始演变的针对AI模型大量乘加运算的特殊处理单元。本文主要梳理一些关于Tensor Core的一些基础概念知识。 什么是混合精度? 混合精度在底层硬件算子层面,使用半精度…...
Git与VScode联合使用详解
目录 Git与VScode联合使用 方式一 1. 用vscode打开文件夹,如图点击初始化仓库,把此仓库初始为git仓库。 2. 提交文件到本地仓库 3. vscode与github账号绑定 4. 在github中建立远程仓库 5. 本地仓库与远程仓库绑定 方式二 1. 在github上建立远程仓…...
SQL Server 加密 view文本
CREATE VIEW dbo.View_building WITH ENCRYPTION AS SELECT * FROM Building_Temp; GO 注意: 加密後就看不到VIEW文本了,修改 ALTER VIEW dbo.View_building WITH ENCRYPTION AS –修改後的VIEW 文本 GO 或者刪除再新增。 所以,要另備份原V…...
Linux查看物理CPU个数、核数、逻辑CPU个数
文章目录 总核数总逻辑CPU数查看物理CPU个数查看每个物理CPU中core的个数(即核数)查看逻辑CPU的个数 总核数 总核数 物理CPU个数 X 每颗物理CPU的核数 总逻辑CPU数 总逻辑CPU数 物理CPU个数 X 每颗物理CPU的核数 X 超线程数 查看物理CPU个数 cat /proc/cpuinfo| grep “…...
python使用单例模式加载config.ini配置文件
在Python中,可以使用单例模式来加载和管理配置文件。下面是一个示例代码: import configparserclass ConfigLoader:__instance Nonedef __init__(self):if ConfigLoader.__instance is not None:raise Exception("ConfigLoader is a singleton cl…...
牛刀小试---二分查找(C语言)
题目:在给定的升序数组中查找指定的数字n,并输出其下标 代码举例: #include <stdio.h> int main() {int arr[] { 1,2,3,4,5,6,7,8,9,10 };//给定的升序数组int left 0;//定义左下标int right sizeof(arr) / sizeof(arr[0]) - 1;//…...
k8s-数据卷
存储卷----数据卷 容器内的目录和宿主机的目录进行挂载 容器在系统上的生命周期是短暂的,delete,k8s用控制创建的pod,delete相当于重启,容器的状态也会恢复到初识状态 一旦容器回到初始状态,所有得分后天编辑的文件…...
Linux学习记录——사십삼 高级IO(4)--- Epoll型服务器
文章目录 1、理解Epoll和对应接口2、实现 1、理解Epoll和对应接口 poll依然需要OS去遍历所有fd。一个进程去多个特定的文件中等待,只要有一个就绪,就使用select/poll系统调用,让操作系统把所有文件遍历一遍,哪些就绪就加上哪些fd…...
6.4、SDN在云数据中心的应用案例分析
云数据中心中的虚拟子网包含网关和IP网段,IP分配给各个服务器,服务器间能够互相通信或通过网关访问外部网络。 在SDN云数据中心内,用户可以随时订购任意网段的虚拟子网,而且这些子网是可以在不同用户之间复用的,也就是说,不同用户可以使用相同的私有网段。 SDN云数据中心…...
SpringBoot整合ES
1.引入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-elasticsearch</artifactId> <version>2.6.3</version> </dependency> 2.config配置文件 Configu…...
Pandas实战100例 | 案例 10: 应用函数 - 使用 `apply`
案例 10: 应用函数 - 使用 apply 知识点讲解 Pandas 的 apply 函数是一个非常强大的工具,允许你对 DataFrame 中的行或列应用一个函数。这对于复杂的数据转换和计算非常有用。你可以使用 apply 来执行任意的函数,这些函数可以是自定义的,也…...
《C++大学教程》4.13汽油哩数
题目: 每位司机都关心自己车辆的行车里程数。有位司机通过记录每次出行所行驶的英里数和用油的加仑数来跟踪他多次出车的情况。请开发一个C程序,它使用一条while语句输入每次出车的行驶英里数和加油量。该程序应计算和显示每次出车所得到的每加仑行驶英里数&#x…...
7.4.分块查找
一.分块查找的算法思想: 1.实例: 以上述图片的顺序表为例, 该顺序表的数据元素从整体来看是乱序的,但如果把这些数据元素分成一块一块的小区间, 第一个区间[0,1]索引上的数据元素都是小于等于10的, 第二…...
K8S认证|CKS题库+答案| 11. AppArmor
目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作: 1)、切换集群 2)、切换节点 3)、切换到 apparmor 的目录 4)、执行 apparmor 策略模块 5)、修改 pod 文件 6)、…...
理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端
🌟 什么是 MCP? 模型控制协议 (MCP) 是一种创新的协议,旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议,它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...
CentOS下的分布式内存计算Spark环境部署
一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架,相比 MapReduce 具有以下核心优势: 内存计算:数据可常驻内存,迭代计算性能提升 10-100 倍(文档段落:3-79…...
ETLCloud可能遇到的问题有哪些?常见坑位解析
数据集成平台ETLCloud,主要用于支持数据的抽取(Extract)、转换(Transform)和加载(Load)过程。提供了一个简洁直观的界面,以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...
PL0语法,分析器实现!
简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...
鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/
使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题:docker pull 失败 网络不同,需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...
企业如何增强终端安全?
在数字化转型加速的今天,企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机,到工厂里的物联网设备、智能传感器,这些终端构成了企业与外部世界连接的 “神经末梢”。然而,随着远程办公的常态化和设备接入的爆炸式…...
安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)
船舶制造装配管理现状:装配工作依赖人工经验,装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书,但在实际执行中,工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...
C++.OpenGL (14/64)多光源(Multiple Lights)
多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...
