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

【鸿蒙】稍微理解一下Stage模型

鸿蒙的Stage模型是HarmonyOS多端统一的应用开发框架中的一个核心概念,用于描述应用的界面层次结构和组件之间的关系。下面将详细解析Stage模型的主要组成部分和特点:

  1. 模型组成

    • UIAbility组件:这是应用中负责绘制用户界面的组件,通过创建UIAbility组件可以实现应用的界面展示和用户交互的功能。UIAbility组件的生命周期包括Create、Foreground、Background、Destroy四个状态,每个状态都对应着特定的应用行为。
    • ExtensionAbility组件:这是一种非UI能力的组件,用于提供后台处理任务、访问系统资源、与外部设备交互等功能,与UIAbility组件相互配合完成应用的功能。ExtensionAbility有多种派生类,如用于卡片场景的FormExtensionAbility和用于输入法场景的InputMethodExtensionAbility等。
    • WindowStage:应用界面的顶层容器,负责管理应用界面的显示和布局。WindowStage可以包含一个或多个UIAbility组件,并负责协调它们之间的界面切换和交互。
    • Context:应用界面的上下文环境,通过Context对象可以获取应用的资源、系统服务和应用数据等。在WindowStage中的每个UIAbility组件都对应一个Context对象,用于提供界面相关的上下文信息。
    • AbilityStage:HarmonyOS应用的生命周期管理容器,负责管理应用的各个阶段(如创建、启动、暂停、恢复、停止等)。AbilityStage可以包含一个或多个WindowStage,用于管理多个应用界面的生命周期和切换。
  2. 模型特点

    • 跨设备通信:系统在拉起过程中,通过底层软总线的能力在两个组件实例之间建立跨设备的RPC连接,开发者在获取RPC接口后,即可进行跨设备通信。
    • 进程模型:Stage模型有三类进程,不支持应用自定义配置多进程,也不支持通过接口启动进程。开发者编写的UIAbility入口及其依赖的代码都在该进程中运行,由UIAbility组件的启动触发创建。
    • 事件订阅:通过发布订阅模式,订阅者可以实现松耦合的消息传递,提高系统的可扩展性和灵活性。无论是动态订阅还是静态订阅,订阅方都可以实现自己的业务逻辑来处理接收到的公共事件。
    • 生命周期管理:Stage模型基于场景的服务扩展、严格的后台管控机制和受限的进程模型,重新定义了应用能力边界,使进程环境从“无序”到“有序”,规范了进程管理模型。
  3. 配置与应用

    • 应用需要在工程的AppScope目录下的app.json5配置文件中配置bundleName标签,用于标识应用的唯一性。同时,还需要配置应用图标、应用标签等。
    • UIAbility组件的配置包括名称、代码路径、描述信息、图标等,这些配置信息对于应用的功能和用户体验至关重要。

Stage模型的设计思想

1、为复杂应用而设计

多个应用组件共享同一个ArkTS引擎实例,应用组件之间可以方便共享对象和状态。

采用面向对象的开发方式,让复杂的应用代码可读性高、利于维护、可扩展性强。

2、支持多设备和多窗口形态

Stage模型的应用组件管理和窗口管理在架构层面上解耦,便于系统对应组件进行裁剪,比如无屏设备可以裁剪窗口;便于系统扩展窗口形态;在多设备上,应用组件可以使用同一套生命周期。

3、平衡应用能力和系统管控成本

Stage模型定义了应用能力的边界,平衡了应用能力和系统管控成本,比如:

  1. 提供特定场景的应用组件,以便于满足更多的使用场景,比如卡片、输入法
  2. 规范了后台进程管理:为保证用户体验,Stage模型对后台应用进程进行了有序治理,应用程序不能随意驻留在后台,应用后台行为也受到严格管理,防止恶意应用行为。

总结来说,鸿蒙的Stage模型是一个全面而强大的应用开发框架,它通过清晰的界面层次结构和组件关系,以及强大的跨设备通信、进程管理和事件订阅等能力,为开发者提供了极大的便利和灵活性,使得应用能够更加高效、稳定地运行在多端设备上。

http://www.lryc.cn/news/386117.html

相关文章:

  • 毕业答辩制作PPT【攻略】
  • 深入解析npm install --save-dev:开发依赖管理的艺术
  • 福布斯 AI 50 榜单中唯一开源向量数据库:Weaviate
  • 信息学奥赛初赛天天练-38-CSP-J2021阅读程序-约数个数、约数和、埃氏筛法、欧拉筛法筛素数应用
  • 第100+13步 ChatGPT学习:R实现决策树分类
  • Hi3861 OpenHarmony嵌入式应用入门--LiteOS MessageQueue
  • ffmpeg编码图象时报错Invalid buffer size, packet size * < expected frame_size *
  • 解决类重复的问题
  • 使用 shell 脚本 统计app冷启动耗时
  • 使用容器部署redis_设置配置文件映射到本地_设置存储数据映射到本地_并开发java应用_连接redis---分布式云原生部署架构搭建011
  • 第五节:如何使用其他注解方式从IOC中获取bean(自学Spring boot 3.x的第一天)
  • Paragon NTFS与Tuxera NTFS有何区别 Mac NTFS 磁盘读写工具选哪个好
  • EtherCAT主站IGH-- 2 -- IGH之coe_emerg_ring.h/c文件解析
  • psensor 的手势功能
  • 使用 nvm 管理 Node 版本及 pnpm 安装
  • uni-appx使用form表单页面初始化报错
  • TiDB-从0到1-数据导出导入
  • 动手学深度学习(Pytorch版)代码实践 -卷积神经网络-16自定义层
  • 树莓派4设置
  • 44.商城系统(二十五):k8s基本操作,ingress域名访问,kubeSphere可视化安装
  • MySQL高级查询
  • 聊聊啥项目适合做自动化测试
  • ROS2开发机器人移动
  • 【强化学习】第02期:动态规划方法
  • 安全技术和防火墙(二)
  • 【51单片机入门】数码管原理
  • 三星DRAM、NAND,“又双叒叕”带头涨价了
  • 星戈瑞FITC-PEG2000-Biotin的生物相容性
  • 数据资产管理的艺术:构建智能化、精细化的数据资产管理体系,从数据整合、分析到决策支持,为企业提供一站式的数据资产解决方案,助力企业把握数字时代的新机遇
  • 基于Java微信小程序校园自助打印系统设计和实现(源码+LW+调试文档+讲解等)