文章目录

  • HarmonyOS app 开发应用框架的架构和组成(Java)
    • 一、应用框架组成
    • 二、HarmonyOS应用部署运行
    • 三、Ability
      • 生命周期
      • Ability类型
    • 四、进程
    • 五、用户程序框架
    • 六、UI编程框架

HarmonyOS app 开发应用框架的架构和组成(Java)


一、应用框架组成

​ 应用框架,简单来说可以理解为面对开发者的一个应用接口。我们可以简单来看,左边就是部署态的示意图们可以看出部署态有UI描述,业务逻辑代码,共享库,配置文件来组成。一般来说,我们的应用会有我们的组件,布局还有实现交互作用的业务逻辑代码,还有我们业务逻辑实现需要的第三方库和SDK以及我妈们的配置文件。当然我们也会有对应的一个运行态,资源管理等来将UI页面展现在用户的面前,当然在运行的时候也会进行一些包管理,任务管理等来辅助我们的程序执行。借助API和Kits等来实现我们软件的一些基本业务功能。

二、HarmonyOS应用部署运行

我们在HarmonyOS将代码打包成一个app,这个app是由很多hap组成的,app打包完成后就会上传到云端,在云端会对我们的app进行检验和拆包,以实现我们app的基本功能和展现,根据不同的设备以及我们的hap功能等,我们就会部署到应用市场,然后在我们的端测侧,我们下载app就会将我们的app打包下载到我们的设备,我们的app运行主要包括了我们的UI和我们Ability。

三、Ability

Ability 是应用所具备能力的抽象,也是应用程序的重要组成部分。一个应用可以具备多种能力(即可以包含多个 Ability),HarmonyOS 支持应用以 Ability 为单位进行部署。Ability 可以分为 FA(Feature Ability)和 PA(Particle Ability)两种类型,每种类型为开发者提供了不同的模板,以便实现不同的业务功能。你可以把我们的Ability理解为我们在鸿蒙开发里的一个基本单元,一个 Page 可以包含多个 AbilitySlice,但是 Page 进入前台时界面默认只展示一个AbilitySlice。默认展示的 AbilitySlice 是通过 setMainRoute() 方法来指定的。如果需要更改默认展示的 AbilitySlice,可以通过 addActionRoute() 方法为此 AbilitySlice 配置一条路由规则。此时,当其他 Page 实例期望导航到此 AbilitySlice 时,可以在 Intent 中指定 Action。 addActionRoute() 方法中使用的动作命名,需要在应用配置文件( config.json )中注册。

​ 现在我们知道这个Page Ability是主要负责页面交互的,那么就可以理解为Android 的Activity。那么都知道Activity有生命周期,同样的Page Ability也是的。下面来看看它的生命周期。

生命周期

声明周期分别是 onStart() 、 onActive() 、 onInactive() 、 onBackground() 、 onForeground() 、 onStop()。

  • onStart() 当系统首次创建 Page Ability 实例时,触发该回调。对于一个 Page Ability 实例,该回调在其生命周期过程中仅触发一次, Page Ability 在该逻辑后将进入 INACTIVE 状态。开发者必须重写该方法,并在此配置默认展示的 AbilitySlice。
  • onActive()   Page Ability 会在进入 INACTIVE 状态后来到前台,然后系统调用此回调。 Page Ability 在此之后进入ACTIVE 状态,该状态是应用与用户交互的状态。 Page Ability 将保持在此状态,除非某类事件发生导致 Page Ability 失去焦点,比如用户点击返回键或导航到其他 Page Ability 。当此类事件发生时,会触发 Page Ability 回到 INACTIVE 状态,系统将调用 onInactive() 回调。此后, Page Ability 可能重新回到ACTIVE 状态,系统将再次调用 onActive() 回调。因此,开发者通常需要成对实现 onActive() 和 onInactive() ,并在 onActive() 中获取在 onInactive() 中被释放的资源。
  • onInactive() 当 Page Ability 失去焦点时,系统将调用此回调,此后 Page 进入 INACTIVE 状态。开发者可以在此回调中实现 Page 失去焦点时应表现的恰当行为。
  • onBackground() 如果 Page Ability 不再对用户可见,系统将调用此回调通知开发者用户进行相应的资源释放,此后 Page Ability 进入 BACKGROUND 状态。开发者应该在此回调中释放 Page Ability 不可见时无用的资源,或在此回调中执行较为耗时的状态保存操作。
  • onForeground() 处于 BACKGROUND 状态的 Page Ability 仍然驻留在内存中,当重新回到前台时(比如用户重新导航到此 Page Ability ),系统将先调用 onForeground()回调通知开发者,而后 Page 的生命周期状态回到 INACTIVE 状态。开发者应当在此回调中重新申请在 onBackground()中释放的资源,最后 Page 的生命周期状态进一步回到 ACTIVE 状态,系统将通过 onActive()回调通知开发者用户。
  • onStop() 系统将要销毁 Page Ability 时,将会触发此回调函数,通知用户进行系统资源的释放。

Ability类型

我们的Ability分成服务Ability和数据Ability。服务Ability 和数据Ability,就是服务能力和数据能力。Service用于提供后台运行任务的能力。Data 用于对外部提供统一的数据访问抽象。在配置文件(config.json)中注册 Ability 时,可以通过配置 Ability 元素中的“type”属性来指定 Ability 模板类型。

四、进程

在HarmonyOS设计中,是允许我们的外度的与安全服务的,其实我们的app是可以灵活组装,灵活多变的,它除了我们的一些公共线程外,也是有一个其他的元服务线程。这个其他的元服务可以来自其他的设备也可以来自云侧,这也就体现了我们HarmonyOS的一个底层互联的能力。

五、用户程序框架

六、UI编程框架

在我们HarmonyOS app开发中,主要有两种方式,一种是命令式,一种是声明式,在目前看来,华为HarmonyOS app开发主要还是依靠Java来进行开放,目前主推语言依然是Java。

通过Java的一个多线程开发,我们的zpp组件,布局,其实最终是交给我们的GPU来进行渲染,从而让用户进行使用,我们Java UI 的一个开发也就是一个组件优化过程和处理,以及底层逻辑的实现。

喜欢本推文的可以点点关注哦。以后会继续发布关于HarmonyOS开发的博文的

HarmonyOS app 开发应用框架的架构和组成(Java)相关推荐

  1. 产品经理必了解的3个app技术框架

    在现在越来越多的app,你可以看到有一些app中是混着网页加载的(我们俗称的为H5)但要注意的web 前端开发是包含着h5的.web前端开发还包括了许多内容,比如说后台html,css,div等都是属 ...

  2. app mvc框架_Google App Engine上的Spring MVC和REST

    app mvc框架 前段时间,我写了一篇关于如何使用Spring MVC实现Restful Web API的文章 . 阅读我以前的文章以了解它. 在那篇文章中,它开发了一个简单的Rest示例. 为了测 ...

  3. python app自动化测试框架_appium+python,app自动化测试框架

    基于appium的app自动化测试框架 基于appium框架的app自动化测试 App自动化测试主要难点在于环境的搭建,appium完全是基于selenium进行的扩展,所以app测试框架也是基于we ...

  4. Android App软件框架搭建

    1. App软件框架搭建 1.0软件基本架构 1.1创建MainActivity并设置布局文件 布局文件如下: <?xml version="1.0" encoding=&q ...

  5. harmonyos能装app吗,如何优雅地开发HarmonyOS APP应用

    研究HarmonyOS有一段时间了,今天主要结合自己多年的项目开发经验和各种技术栈结合HarmonyOS APP应用开发讲解下如何优雅地进行开发和积累. 一.挖掘项目需求或者做项目移植,并且做技术分析 ...

  6. 极氪汽车 APP 系统云原生架构转型实践

    前言 新能源汽车已经成为我国汽车市场再次崛起的关键支柱,随着新能源汽车市场的快速发展,不同类型的品牌造车厂商呈现出百花齐放的态势.极氪汽车是吉利控股集团旗下高端纯电汽车新品牌,2021 年 4 月极氪 ...

  7. 调度框架学习笔记(3)—— 集群调度框架的架构演进过程

    本章是 The evolution of cluster scheduler architectures 文章的学习笔记.这篇文章讨论了这些年调度架构是如何发展的以及为什么会这样发展. 首先介绍一下这 ...

  8. 架构设计的本质:系统与子系统、模块与组件、框架与架构

    点击关注公众号,Java干货及时送达 -     前言     - 在软件研发这个领域,程序员的终极目标都是想成为一名合格的架构师.然而梦想很美好,但现实却很曲折. 在实际工作中,程序员会分很多种,有 ...

  9. 架构设计本质:系统与子系统、模块与组件、框架与架构

    在软件研发这个领域,程序员的终极目标都是想成为一名合格的架构师.然而梦想很美好,但现实却很曲折. 在实际工作中,程序员会分很多种,有的擅长编码实现,有的擅长底层原理,有的擅长逻辑实现等等,在各自的领域 ...

最新文章

  1. postfix邮箱服务
  2. CSS实现input默认文字灰色有提示文字点击后消失鼠标移开显示
  3. ThinkPad系列笔记本待机恢复后,双击我的电脑始终运行而无法打开
  4. linux 注销其它用户,linux下注销其它用户或者tty的命令
  5. 年终盘点:云上争锋,谁领国产数据库之先机?
  6. 2021科技创新者大会:“武汉永远是一座造光之城”
  7. 制作日历组件,点击出来一个弹窗
  8. 130825组队赛-Regionals 2012, North America - East Central NA
  9. logstash收集nginx日志
  10. http://blog.csdn.net/evankaka/article/details/45155047
  11. 从单体迈向Serverless的避坑指南
  12. 计算机的改错键是什么符号,对号和错号在键盘上怎么输入?
  13. windows连接虚拟专用网络的方法教程
  14. 只有360浏览器能打开别的都打不开
  15. 了解BigDecimal常用坑,不迷路
  16. 《Matlab算法》 part1 误差分析
  17. 蒟蒻の算法题(~~完全不会~~的期望)01
  18. ArcGIS Pro试用许可申请
  19. STM32串口通信、串口调试助手
  20. The Singularity Is Near(奇点临近)阅读笔记----六大纪元

热门文章

  1. 一些关于java的学习心得
  2. 解决中文Windows系统下解压日语名文件乱码
  3. 企业架构的框架和方法论介绍
  4. Swift - SwiftyJSON的使用详解(附样例,用于JSON数据处理)
  5. java女人_Java是一个事业成功的女人
  6. eks安装kubectl
  7. 自动驾驶——未来智能交通的畅想
  8. 邻接矩阵的c语言算法思路,C语言邻接矩阵的实现
  9. arduino获取TDS数据再由ESP01发送到服务器,微信小程序显示
  10. 【SEO系列学习专题】——000 序:为什么要学SEO,怎么学?