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

鸿蒙开发学习——应用程序框架

文章目录

    • UIAbility的生命周期
      • Create状态
      • WindowStageCreate
      • Foreground和Background前后台展示控制
      • onWindowStageDestroy
      • Destory
  • 总结

UIAbility的生命周期

在这里插入图片描述

  • 感觉这里他讲的不清晰,UIAbility的4个声明周期是Create、Foreground(桌面展示)、Background(后台隐藏)、destroy销毁,然后WindowStageCreate和WindowStageDestory是窗口管理器的生命周期。

Create状态

  • 创建UIAbility时,系统回调用oncreate函数,需要在oncreate函数中进行初始化操作。
    • 在src中的entryability中的EntryAbility.ts中设置有关生命周期的操作。
    • 初始化了日志信息等操作。
  • 使用样例
  • 例如用户打开电池管理应用,在应用加载过程中,在UI页面可见之前,可以在onCreate回调中读取当前系统的电量情况,用于后续的UI页面展示。

在这里插入图片描述

WindowStageCreate

在这里插入图片描述

  • create创建应用,到进入Foreground前台进行展示之前,需要窗口管理器创建一个WindowStage,类似窗口平台。

    • WindowStage是本地窗口管理器,用于管理窗口相关的内容,控制窗口是在前台进行展示,还是在后台不可见等
    • 控制窗口的获焦和失焦,具体参考官网给的程序
      • 例如用户打开游戏应用,正在打游戏的时候,有一个消息通知,打开消息,消息会以弹窗的形式弹出在游戏应用的上方,此时,游戏应用就从获焦切换到了失焦状态,消息应用切换到了获焦状态。对于消息应用,在onWindowStageCreate回调中,会触发获焦的事件回调,可以进行设置消息应用的背景颜色、高亮等操作。
  • 具体回调函数onWindowStageCreate

    • 设置UI界面加载的具体内容,比如说通过loadContent设置第一个加载的页面内容
    • 其他的包括WindowStage事件订阅等操作,其他回调函数展示如下,相关开发链接跳转

在这里插入图片描述

  • 在我展示的代码中,第一个展示的是ToDoListPage界面。

Foreground和Background前后台展示控制

Foreground

  • Foreground是应用进入前台桌面展示时,所处于的生命周期,通过回调函数onForeground来实现资源申请。一般回调函数实现如下功能
    • 在onForeground回调中申请系统需要的资源
    • 重新申请在onBackground中释放的资源。

onBackground

  • background是应用进入后台展示时,所处于的生命周期,通过回调函数onBackground来是实现相关操作。实现功能如下
    • 释放UI页面不可见时无用的资源
    • 执行较为耗时的操作,例如状态保存

在这里插入图片描述

  • 使用地图应用的操作权限
    • 用户打开地图应用查看当前地理位置的时候,假设地图应用已获得用户的定位权限授权,可以在onForeground回调函数中,申请定位资源,获取定位信息
    • 当地图应用切换到后台状态,可以在onBackground回调中停止定位功能,以节省系统的资源消耗。

onWindowStageDestroy

  • 在手机使用中,关闭窗口,对应回调函数onWindowStageDestory,释放UI界面资源
    在这里插入图片描述

Destory

  • 手机应用中,就是彻底关掉应用,完全销毁,回到函数onDestory
    • 系统资源的释放、数据的保存等操作

总结

  • 大概知道了,四个状态,两个窗口管理器。
http://www.lryc.cn/news/247266.html

相关文章:

  • Linux dd命令详解:如何从标准输入或文件中读取、转换并输出数据(附实例教程和注意事项)
  • Python——常见内置模块
  • JAVA毕业设计112—基于Java+Springboot+Vue的宠物领养社区小程序(源码+数据库)
  • golang log模块使用
  • 软件开发中的抓大放小vs极致细节思维
  • java文件上传以及使用阿里云OSS
  • 相关性分析和作图
  • AlphaFold的原理及解读
  • 【ChatGLM3-6B】Docker下快速部署
  • 两部手机数据传输后备忘录不见了怎么回事
  • 【Unity入门】LayerMask小结
  • mysql按年、季度、月,统计
  • Python的换行和转义:深入理解代码排版与字符串处理
  • dart多线程双向通信的案例----【小学4年级课程】
  • 每日一练:简易计算器
  • Jmeter和Testlink自动化测试框架研究与实施
  • MethodArgumentNotValidException 与 ConstraintViolationException
  • 【数学】旋转矩阵
  • Python与设计模式--中介者模式
  • 后台管理系统开源项目
  • 电子印章管理系统:是什么、3个平台推荐
  • 现货黄金区间交易的两个要点
  • 安卓底部导航栏BottomNavigationView
  • rust每日一库 rand 生成随机数
  • Unity SRP 管线【第三讲:URP 光照】
  • 怎么更新BI报表数据?问我就对了
  • SpringBoot 入门学习
  • 高等数学零基础篇复习笔记
  • CentOS 系列:CentOS 7文件系统的组成
  • String转Date,Date转String