当前位置: 首页 > 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
    • 系统资源的释放、数据的保存等操作

总结

  • 大概知道了,四个状态,两个窗口管理器。

相关文章:

  • 增强静态数据的安全性
  • Java实现通过经纬度求两个任意地点在球面上的距离
  • java开发之个微群聊自动添加好友
  • 装饰者设计模式
  • vue3中的动态component组件
  • 前端命名规范总结
  • linaro交叉编译工具链下载与使用笔记
  • 量子计算的世界:探索叠加态与Python编程
  • C语言——数组转换
  • Zabbix“专家坐诊”第212期问答汇总
  • 外包干了5个月,技术退步明显.......
  • SELinux refpolicy详解(2)
  • RabbitMQ消息的应答
  • SpringBoot——自定义start
  • 【JavaEE初阶】volatile 关键字、wait 和 notify
  • @jsonView过滤属性
  • 【笔记】你不知道的JS读书笔记——Promise
  • 【从零开始安装kubernetes-1.7.3】2.flannel、docker以及Harbor的配置以及作用
  • 【跃迁之路】【477天】刻意练习系列236(2018.05.28)
  • Angularjs之国际化
  • C语言笔记(第一章:C语言编程)
  • ECMAScript入门(七)--Module语法
  • iOS仿今日头条、壁纸应用、筛选分类、三方微博、颜色填充等源码
  • java8-模拟hadoop
  • Javascripit类型转换比较那点事儿,双等号(==)
  • JavaScript服务器推送技术之 WebSocket
  • JAVA多线程机制解析-volatilesynchronized
  • node和express搭建代理服务器(源码)
  • SQLServer之索引简介
  • Transformer-XL: Unleashing the Potential of Attention Models
  • TypeScript实现数据结构(一)栈,队列,链表
  • 安卓应用性能调试和优化经验分享
  • 初识MongoDB分片
  • 力扣(LeetCode)965
  • 面试总结JavaScript篇
  • 前端_面试
  • 三分钟教你同步 Visual Studio Code 设置
  • 实习面试笔记
  • 使用putty远程连接linux
  • 适配iPhoneX、iPhoneXs、iPhoneXs Max、iPhoneXr 屏幕尺寸及安全区域
  • 说说动画卡顿的解决方案
  • 消息队列系列二(IOT中消息队列的应用)
  • 小程序button引导用户授权
  • Oracle Portal 11g Diagnostics using Remote Diagnostic Agent (RDA) [ID 1059805.
  • 积累各种好的链接
  • ​ 全球云科技基础设施:亚马逊云科技的海外服务器网络如何演进
  • #100天计划# 2013年9月29日
  • #ifdef 的技巧用法
  • #stm32整理(一)flash读写
  • #我与Java虚拟机的故事#连载13:有这本书就够了
  • (07)Hive——窗口函数详解
  • (12)Linux 常见的三种进程状态
  • (17)Hive ——MR任务的map与reduce个数由什么决定?
  • (二)学习JVM —— 垃圾回收机制
  • (附源码)计算机毕业设计高校学生选课系统