应用生命周期
在app.js中可以定义如下应用生命周期函数:
属性 | 类型 | 描述 | 触发时机 |
---|---|---|---|
onCreate | () => void | 应用创建 | 当应用创建时调用。 |
onShow6+ | () => void | 应用处于前台 | 当应用处于前台时触发。 |
onHide6+ | () => void | 应用处于后台 | 当应用处于后台时触发。 |
onDestroy | () => void | 应用销毁 | 当应用退出时触发。 |
页面生命周期
在页面JS文件中可以定义如下页面生命周期函数:
属性 | 类型 | 描述 | 触发时机 |
---|---|---|---|
onInit | () => void | 页面初始化 | 页面数据初始化完成时触发,只触发一次。 |
onReady | () => void | 页面创建完成 | 页面创建完成时触发,只触发一次。 |
onShow | () => void | 页面显示 | 页面显示时触发。 |
onHide | () => void | 页面消失 | 页面消失时触发。 |
onDestroy | () => void | 页面销毁 | 页面销毁时触发。 |
onBackPress | () => boolean | 返回按钮动作 | 当用户点击返回按钮时触发。 - 返回true表示页面自己处理返回逻辑。 - 返回false表示使用默认的返回逻辑。 - 不返回值会作为false处理。 |
onActive()5+ | () => void | 页面激活 | 页面激活时触发。 |
onInactive()5+ | () => void | 页面暂停 | 页面暂停时触发。 |
onNewRequest()5+ | () => void | FA重新请求 | FA已经启动时收到新的请求后触发。 |
页面A的生命周期接口的调用顺序
-
打开页面A:onInit() -> onReady() -> onShow()
-
在页面A打开页面B:onHide()
-
从页面B返回页面A:onShow()
-
退出页面A:onBackPress() -> onHide() -> onDestroy()
-
页面隐藏到后台运行:onInactive() -> onHide()
-
页面从后台运行恢复到前台:onShow() -> onActive()
资源限定词
资源限定词可以由一个或多个表征应用场景或设备特征的限定词组合而成,包括屏幕密度等维度,限定词之间通过中划线(-)连接。开发者在resources目录下创建限定词文件时,需要掌握限定词文件的命名要求以及与限定词文件与设备状态的匹配规则。
资源限定词的命名要求
-
限定词的组合顺序:屏幕密度。开发者可以根据应用的使用场景和设备特征,选择其中的一类或几类限定词组成目录名称,顺序不可颠倒。
-
限定词的连接方式:限定词之间均采用中划线(-)连接。例如:res-dark-ldpi.json 。
-
限定词的取值范围:每类限定词的取值必须符合下表的条件,否则,将无法匹配目录中的资源文件,限定词大小写敏感。
-
限定词前缀:resources资源文件的资源限定词有前缀res,例如res-ldpi.json。
-
默认资源限定文件:resources资源文件的默认资源限定文件为res-defaults.json。
-
资源限定文件中不支持使用枚举格式的颜色来设置资源。
表1 资源限定词
类型 | 含义与取值说明 |
---|---|
屏幕密度 | 表示设备的屏幕密度(单位为dpi),取值如下: - ldpi:表示低密度屏幕(~120dpi)(0.75基准密度) - mdpi:表示中密度屏幕(~160dpi)(基准密度) - hdpi:表示高密度屏幕(~240dpi)(1.5基准密度) - xhdpi:表示加高密度屏幕(~320dpi)(2.0基准密度) - xxhdpi:表示超超高密度屏幕(~480dpi)(3.0基准密度) - xxxhdpi:表示超超超高密度屏幕(~640dpi)(4.0基准密度) |
限定词与设备状态的匹配规则
-
在为设备匹配对应的资源文件时,限定词目录匹配的优先级从高到低依次为:MCC和MNC> 横竖屏 > 深色模式 > 设备类型 > 屏幕密度。在资源限定词目录均未匹配的情况下,则匹配默认资源限定文件。
-
如果限定词目录中包含资源限定词,则对应限定词的取值必须与当前的设备状态完全一致,该目录才能够参与设备的资源匹配。例如:资源限定文件res-hdpi.json与当前设备密度xhdpi无法匹配。
引用JS模块内resources资源
在应用开发的hml和js文件中使用$r的语法,可以对JS模块内的resources目录下的json资源进行格式化,获取相应的资源内容,该目录与pages目录同级,具体目录结构请参考文件组织。
属性 | 类型 | 描述 |
---|---|---|
$r | (key: string) => string | 获取资源限定下具体的资源内容。例如:$r('strings.hello')。 参数说明: - key:定义在资源限定文件中的键值,如strings.hello。 |
res-defaults.json示例:
{
"strings": {
"hello": "hello world"
}
}
示例
resources/res-dark.json:
{
"image": {
"clockFace": "common/dark_face.png"
},
"colors": {
"background": "#000000"
}
}
resources/res-defaults.json:
{
"image": {
"clockFace": "common/face.png"
},
"colors": {
"background": "#ffffff"
}
}
<!-- xxx.hml -->
<div style="background-color: {{ $r('colors.background') }}">
<image src="{{ $r('image.clockFace') }}"></image>
</div>
说明
资源限定文件中不支持颜色枚举格式。
最后
有很多小伙伴不知道学习哪些鸿蒙开发技术?不知道需要重点掌握哪些鸿蒙应用开发知识点?而且学习时频繁踩坑,最终浪费大量时间。所以有一份实用的鸿蒙(HarmonyOS NEXT)资料用来跟着学习是非常有必要的。
点击→【纯血版鸿蒙全套最新学习资料】希望这一份鸿蒙学习资料能够给大家带来帮助!~
鸿蒙(HarmonyOS NEXT)最新学习路线
该路线图包含基础技能、就业必备技能、多媒体技术、六大电商APP、进阶高级技能、实战就业级设备开发,不仅补充了华为官网未涉及的解决方案
路线图适合人群:
IT开发人员:想要拓展职业边界
零基础小白:鸿蒙爱好者,希望从0到1学习,增加一项技能。
技术提升/进阶跳槽:发展瓶颈期,提升职场竞争力,快速掌握鸿蒙技术
2.视频学习资料+学习PDF文档
这份鸿蒙(HarmonyOS NEXT)资料包含了鸿蒙开发必掌握的核心知识要点,内容包含了(ArkTS、ArkUI开发组件、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、(南向驱动、嵌入式等)鸿蒙项目实战等等)鸿蒙(HarmonyOS NEXT)技术知识点。
HarmonyOS Next 最新全套视频教程
大厂面试必问面试题
鸿蒙南向开发技术
鸿蒙APP开发必备
《鸿蒙 (OpenHarmony)开发基础到实战手册》
OpenHarmony北向、南向开发环境搭建
《鸿蒙开发基础》
《鸿蒙开发进阶》
《鸿蒙进阶实战》
总结
总的来说,华为鸿蒙不再兼容安卓,对程序员来说是一个挑战,也是一个机会。只有积极应对变化,不断学习和提升自己,才能在这个变革的时代中立于不败之地。