当前位置: 首页 > news >正文

鸿蒙学习笔记(1)-文件解读、编写程序、生命周期

一、文件解读

.hvigor:装有一些编译过程中的依赖缓存。

.idea:工具自动生成的,标记我们的工具是基于idea。

AppScope:代表着整个APP的配置,最后打包使用。之中的resources目录下是应用的名称和图片存放路径,其中app.json5:

`bundleName:打包后包的名称,`
`versionCode、versionName:版本号,`
`icon:应用的图标,`
`lable:应用的名字。

entry:模块入口,代表项目中的一个模块,这个模块一般作为程序的主模块,一个程序可以有很多模块。

oh_modules:存放自己的模块依赖,也可以存放外面的模块。

entry/main:里面存放开发用到的所有内容

entry/main/ets:一般用于开发源代码,包括页面、组件、路由等。

entry/main/resources:存放项目需要用到的资源文件。

组件放在view目录当中,数据和约束放在viewmodel目录下,网络请求apis目录,封装公共工具放在utils下。

main/ets

---apis:这个文件夹用于后续网络请求封装代码

--utils:这个用于封装项目开发工具

--libs:用于存放第三方插件

--view:这个文件夹里存放组件

--Pages:存放开发的页面

--viewmodel:存放数据和约束

组件默认导出和普通导出,默认导出需要用到export default,主页面引用不需要加{},默认导出全局只可以导出一次,而普通导出可以在不同的页面中多次导出使用。

在写工具或者其他约束的时候都是面向对象来写,用class + 名{}进行使用,工具暴露出去,记得加export

(1)工具包:获取当前时间

class DataFormat{
  dataFormat(value:Date){
   // return value.getFullYear()+"-"+(value.getMonth()+1)+"-"+value.getDate()+" "+value.getHours()+":"+value.getMinutes()+":"+value.getSeconds();
  const year = value.getFullYear();
  const month = value.getMonth() + 1;
  const day = value.getDate();
  return `${year}-${month}-${day}`;
  }
}
export default new DataFormat();

二、编写程序

ArkTS的特点:

是一种基于TS的开发规则来设计的一种开发语言,里面涵盖了所有所有TS的规则,以及包含ES5\6的语法规则。

开发鸿蒙项目相当于在前端基础上学习一个新的框架和开发模式,采用声明式开发规范,结合ArkUI进行页面构造布局,采用封装好的属性来进行页面样式渲染和布局优化。

什么是ArkUI?

像Text(''文本组件)、button('按钮组件'),像这些都是底层封装好的,可以直接拿来使用的ArcUI规范。

项目运行方式?

预览器、模拟器、真机三种

三、生命周期

应用 UIAbility 的生命周期

1、onCreate - 创造对象实例触发 - 此阶段是 UIAbility 的初始化创建的阶段,为后续的功能开展奠定基础。在这个阶段,系统开始为组件分配资源并进行初步的设置,但此时 UI 尚未完全初始化完成,通过 getContext 无法获取上下文,不过可以利用 this.context 来获取上下文信息。

2、onWindowStageCreate - 窗口创建时触发 - 当窗口状态开始创建时进入此阶段。与 onCreate 阶段类似,UI 在此刻还未完成初始化,无法通过 getContext 获取上下文了,可借助 this.context 获取相关上下文信息。这两个阶段对于理解组件的初始化过程中上下文获取的限制和途径至关重要。

3、onForeground - 进入前台时触发 - 当组件切换到前台显示时触发,此时组件开始与用户进行交互,例如显示界面、接收用户输入等。在这个阶段,组件的各项功能处于活跃状态。

4、onBackground - 进入后台时触发 - 与之相反,当组件进入后台时触发该阶段。在这一阶段,组件可能需要暂停一些不必要的操作、保存数据或者释放部分资源,以优化系统性能并为再次回到前台做好准备。

5、onWindowStageDestory - 窗口销毁时触发 - 窗口阶段销毁时的处理阶段,此时组件开始清理与窗口相关的资源和状态,为可能的完全销毁做过渡。

6、onDestory - 销毁对象实例触发 - UIAbility 销毁阶段,释放所有占用的资源,完成组件的生命周期。

7、onNewWant - 窗口存在再次拉起时触发 - 窗口创建之后-只要不销毁,就一直存在,此时如果有应用使用 startAbility 拉起此应用窗口,窗口不会再 Create, 只会进入 onNewWant。

AbilityStage 的生命周期和事件回调

DevEco Studio默认工程中未自动生成AbilityStage,如需要使用AbilityStage的能力,可以手动新建一个AbilityStage文件。

1、onCreate - 生命周期 - 在开始加载对应 Module 的第一个 UiAbility 实例之前会先创建 AbilityStage,并在 AbilityStage 创建完成之后执行其 onCreate()生命周期回调。AbilityStage 模块提供在 Module 加载的时候,通知开发者,可以在此进行该 Module 的初始化(如资源预加载,线程创建等)能力。

2、onAcceptWant - 事件回调 - UIAbility 指定实例模式(specified)启动时候触发的事件回调。

3、onConfigurationUpdated - 事件回调 - 当系统全局配置发生变更时触发的事件,系统语言、深浅色等,配置项目前均定义在 Configuration 类中。

4、onMemoryLevel - 事件回调 - 当系统调整内存时触发的事件。

组件的生命周期

1、aboutToAppear - 函数在创建自定义组件的新实例后,在执行其 build()函数之前执行。允许在 aboutToAppear 函数中改变状态变量,更改将在后续执行 build()函数中生效。实现自定义布局的自定义组件的 aboutToAppear 生命周期在布局过程中触发。

2、onDidBuild 12+ - onDidBuild 函数在执行自定义组件的 build()函数之后执行。不建议在 onDidBuild 函数中更改状态变量、使用 animateTo 等功能,这可能会导致不稳定的 UI 表现。

3、aboutToDisappear - 函数在自定义组件析构销毁时执行。不允许在 aboutToDisappear 函数中改变状态变量,特别是@Link 变量的修改可能会导致应用程序行为不稳定。

4、onPageShow - 带 entry 的有 - 页面每次显示时触发一次,包括路由过程、应用进入前台等场景,仅@Entry 装饰的自定义组件生效。

5、onPageHide - 带 entry 的有 - 页面每次隐藏时触发一次,包括路由过程、应用进入后台等场景,仅@Entry 装饰的自定义组件生效。

6、onBackPressed - 带 entry 的有 - 当用户点击返回按钮时触发,仅@Entry 装饰的自定义组件生效。返回 true 表示页面自己处理返

7、aboutToReuse - 当一个可复用的自定义组件从复用缓存中重新加入到节点树时,触发aboutToReuse生命周期回调,并将组件的构造参数传递给aboutToReuse。

8、aboutToRecycle - 组件的生命周期回调,在可复用组件从组件树上被加入到复用缓存之前调用。

9、onWillApplyTheme - onWillApplyTheme函数用于获取当前组件上下文的Theme对象,在创建自定义组件的新实例后,在执行其build()函数之前执行。允许在onWillApplyTheme函数中改变状态变量,更改将在后续执行build()函数中生效。

http://www.dtcms.com/a/91166.html

相关文章:

  • 汽车高级驾驶辅助系统应用存储MRAM
  • 边缘计算场景下的分布式推理系统架构设计
  • MySQL索引优化最佳实践
  • Python 3.8 Requests 爬虫教程(2025最新版)
  • 递归进阶(用递归改造循环11~20)(1082、1265、1395、1083、1066、1782、1783、1784、1008、1224)
  • 树的深度优先(DFS)和广度优先(BFS)算法
  • Nginx相关漏洞解析
  • Redis 版本演进及主要新特性
  • 常见框架漏洞攻略-Spring篇
  • 拓扑排序(算法基础)
  • 针对信息化软硬件设备:常用询价网站是否够用
  • 【Unity3D脚本与系统设计6】鼠标触摸超时待机实现
  • 全排列 | 下一个排列
  • CSS3学习教程,从入门到精通,CSS3 浮动与清除浮动语法知识点及案例代码(14)
  • 计算机二级:文件操作
  • C语言部分代码
  • 深入理解指针(2)(C语言版)
  • MySQL基本函数
  • UE4学习笔记 FPS游戏制作20 重写机器人和玩家死亡 切换相机和模型
  • 【leetcode hot 100 739】每日温度
  • 关系图:赋能数据可视化的动态扩展
  • 微服务中的服务发现与注册中心
  • python之网络编程
  • zabbix添加IIS网站计数器(并发连接数)
  • jupyter使用过程中遇到的问题
  • 硬件学习笔记--53 DC-DC Buck工作原理、选型及应用介绍
  • <KeepAlive>和<keep-alive>有什么区别
  • LiblibAI 接入阿里通义大模型,推出 10 秒 AI 视频生成功能
  • 汽车加气站操作工题目及答案解析
  • 算法学习第十六天:动态规划(补充题目)