鸿蒙学习1概况

news2024/11/17 23:42:03

鸿蒙学习1相关概念

    • 前言
    • 相关概念
        • Stage 模型
          • 1. AbilityStage
          • 2. UIAbility组件和ExtensionAbility组
          • 3. WindowStage
          • 4. Context
        • 事件传递
          • UIAbility组件与UI的数据同步
          • UIAbility组件间交互(设备内)
        • 进程模型
        • 线程模型

前言

有时间多看官网,官网的才是一手资料。
对比其他语言,以前学起来官网都在国外,不是打开不流畅,就是外语不精通。鸿蒙官网,母语学习自带buf,你懂的。
——以前是没机会,现在想做个好人

为什么刚开始学习就看概念,不应该是敲第一行代码么。没错。我是先把官网的第一课学了,并且通过了基础认证才想着写帖子总结下的。所以对于小白,还是可以先看官网的第一课的。非常基础的课程。
毕竟,一开始没事瞎看看的。这不是裸辞在家,才有空写帖子呀。

全局思维从整体看 鸿蒙应用。Stage模型概念清晰且重要

在这里插入图片描述

相关概念

Stage 模型

Stage 模型

从官网搬过来的
在这里插入图片描述

1. AbilityStage
  • 每个Entry类型或者Feature类型的HAP在运行期都有一个AbilityStage类实例,当HAP中的代码首次被加载到进程中的时候,系统会先创建AbilityStage实例。
  • AbilityStage与Module一一对应
2. UIAbility组件和ExtensionAbility组

Stage模型提供UIAbility和ExtensionAbility两种类型的组件,这两种组件都有具体的类承载,支持面向对象的开发方式。
UIAbility组件是一种包含UI界面的应用组件,主要用于和用户交互。
UIAbility组件是系统调度的基本单元,为应用提供绘制界面的窗口。
一个应用可以包含一个或多个UIAbility组件。例如,在支付应用中,可以将入口功能和收付款功能分别配置为独立的UIAbility。

UIAbility的设计理念:

  1. 原生支持应用组件级的跨端迁移和多端协同。
  2. 支持多设备和多窗口形态。

图中 UIAbility:page 1:N 的概念,类似。android的 单activity,多fragment应用。android这方面做的不好,开发者也没那个功夫搞单activity应用。

● 如果开发者希望在任务视图中看到一个任务,则建议使用一个UIAbility,多个页面的方式。
● 如果开发者希望在任务视图中看到多个任务,或者需要同时开启多个窗口,则建议使用多个UIAbility开发不同的模块功能。

3. WindowStage

类似Android 的window
每个UIAbility类实例都会与一个WindowStage类实例绑定,WindowStage类起到了应用进程内窗口管理器的作用,它包含一个主窗口。也就是说,UIAbility通过WindowStage持有了一个窗口,该窗口为ArkUI提供了绘制区域。

4. Context

在Stage模型上,Context及其派生类向开发者提供在运行期可以调用的各种能力。UIAbility组件和各种ExtensionAbility派生类都有各自不同的Context类,他们都继承自基类Context,但是各自又根据所属组件,提供不同的能力。

在这里插入图片描述
各类Context的持有关系
在这里插入图片描述

State
     -Module(模块-对应Hap包)
         -ability(应用服务入口)
            -pages(页面)
              -component(自定义组件)
            -resources(资源)

来自黑马程序

事件传递

UIAbility和Page交互

UIAbility组件与UI的数据同步
  • EventHub进行数据通信

    • 事件需要先订阅后发布,订阅者收到消息后进行处理。
  • globalThis进行数据同步

    • ArkTS引擎实例内部的一个全局对象,在ArkTS引擎实例内部都能访问
    • 使用globalThis时需要避免存放相同名称的对象。例如AbilityA和AbilityB可以使用globalThis共享数据,在存放相同名称的对象时,先存放的对象会被后存放的对象覆盖。
      在这里插入图片描述
  • AppStorage/LocalStorage进行数据同步

    • 可用于实现应用级别和UIAbility级别的数据同步
UIAbility组件间交互(设备内)
进程模型
  • 应用中(同一包名)的所有UIAbility运行在同一个独立进程中。
  • WebView拥有独立的渲染进程。
  • CES(Common Event Service,公共事件服务)
    • 系统公共事件和自定义公共事件
      • 系统公共事件 只有系统应用和系统服务才能发布,例如HAP安装,更新,卸载等公共事件
    • 三种事件类型
      • 无序公共事件
      • 有序公共事件
      • 粘性公共事件 发送粘性事件必须是系统应用或系统服务,且需要申请ohos.permission.COMMONEVENT_STICKY权限
    • 订阅方式 两种 subscriber
      • 动态订阅
      • 静态订阅
    • 发布事件 publish
线程模型
* 主线程
* 子线程
	* Worker 最多8个
	* TaskPool 线程池
* 线程间通信
	* Emitter
	* Worker
	* globalThis

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1637430.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Android项目中添加Dobby(inline hook)

2024技术交流群 ​ 课程地址 鸿蒙(HarmonyOS)APP开发实战课程(入门到精通) https://edu.csdn.net/course/detail/39448 1.Ubuntu编译Dobby 2.Dobby框架的介绍 Dobby是一个轻量级、多平台、多架构的inline hook框架,它使用起来轻快便捷,支持Windows/ma…

git如何将多个commit合并成一个?

我们使用git进行版本控制,在本地开发完某个功能时,需要提交commit,然后push至开发分支。简单的功能还好,几个commit可能就好了。但是如果功能比较复杂,commit多达十几甚至几十个时,commit管理就会很冗长。比…

selinux 基础知识

目录 概念 作用 SELinux与传统的权限区别 SELinux工作原理 名词解释 主体(Subject) 目标(Object) 策略(Policy) 安全上下文(Security Context) 文件安全上下文查看 先启用…

【数据结构】二叉树(带图详解)

文章目录 1.树的概念1.2 树的结构孩子表示法孩子兄弟表示法 1.3 相关概念 2.二叉树的概念及结构2.1 二叉树的概念2.2 数据结构中的二叉树-五种形态2.3 特殊的二叉树2.4 二叉树的存储结构顺序存储链式存储 2.5 二叉树的性质 3. 堆3.1 堆的定义3.2 堆的实现堆的结构堆的插入向上调…

Android binder死亡通知机制

在Andorid 的binder系统中,当Bn端由于种种原因死亡时,需要通知Bp端,Bp端感知Bn端死亡后,做相应的处理。 使用 Bp需要先注册一个死亡通知,当Bn端死亡时,回调到Bp端。 1,java代码注册死亡通知 …

Springboot+Vue+小程序+基于微信小程序护农远程看护系统

开发平台为idea,maven管理工具,Mybatis操作数据库,根据市场数字化需要为农户打造小程序可远程查看农场的种植情况。项目是调试,讲解服务均可有偿获取,需要可在最下方QQ二维码处联系我。 SpringbootVue小程序&#xff…

Android --- 消息机制与异步任务

在Android中,只有在UIThread(主线程)中才能直接更新界面, 在Android中,长时间的工作联网都需要在workThread(分线程)中执行 在分线程中获取服务器数据后,需要立即到主线程中去更新UI来显示数据, 所以,如…

50. 【Android教程】xml 数据解析

xml 是一种标记扩展语言(Extension Mark-up Language),学到这里大家对 xml 语言一定不陌生,但是它在 Android 中的运用其实只是冰山一角。抛开 Android,XML 也被广泛运用于各种数据结构中。在运用 xml 编写 Android 布…

Docker创建镜像之--------------基于Dockerfile创建

目录 一、在编写 Dockerfile 时,有严格的格式需要遵循 二、Dockerfile 操作常用的指令 2.1ENTRYPOINT和CMD共存的情形 2.2ENTRYPOINT和CMD的区别 2.3ADD 与COPY的区别 三、Dockerfile案例 3.1构建apache镜像 3.1.1 创建镜像目录方便管理 3.1.2创建编写dock…

基于Springboot的音乐翻唱与分享平台

基于SpringbootVue的音乐翻唱与分享平台设计与实现 开发语言:Java数据库:MySQL技术:SpringbootMybatis工具:IDEA、Maven、Navicat 系统展示 用户登录 首页 音乐资讯 音乐翻唱 在线听歌 后台登录 后台首页 用户管理 音乐资讯管理…

基础安全:CSRF攻击原理与防范

CSRF的概念 CSRF(Cross-Site Request Forgery)中文名为“跨站请求伪造”。这是一种常见的网络攻击手段,攻击者通过构造恶意请求,诱骗已登录的合法用户在不知情的情况下执行非本意的操作。这种攻击方式利用了Web应用程序中用户身份验证的漏洞,即浏览器在用户完成登录后会自…

JavaEE 初阶篇-深入了解网络原理中传输层的端口号与 UDP 协议报文格式

🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 端口号概述 1.1 端口号的作用 1.2 端口号不能重复被多个进程绑定 2.0 传输层协议 - UDP 2.1 UDP 的特性 2.2 UDP 的报文格式 1.0 端口号概述 端口号是计算机网络中…

进一步了解android studio 里 AGP,gradle等关系

目录 (1) gradle是什么 (2) 工程的jdk版本,及引用包的编译版本的关系 实践 问题与解决 编译成功与运行成功 编译成功 运行成功 (1) gradle是什么 Gradle是一个构建工具,它是…

1.6 Java全栈开发前端+后端(全栈工程师进阶之路)-前置课程Jdbc编程,使用Java通过Jdbc对数据库进行基础操作

原理图 用java代码实现连接数据库(mysql)的操作 因为数据库连接需要使用到API和URL,下面简单介绍下API和URL的概念, API: Application Programming Interface应用程序编程接口,就是一套类库 Java中的AP…

2024中国绿电制氢技术趋势分析报告

来源:ATC & 大东时代 国家级规划《氢能产业发展中长期规划(2021-2035)》出台 • 主要宗旨:明确“能源”的角色定位以及在绿色低碳转型中的作用,为产业发展构建清晰的蓝图。 • 阶段目标设立: • 2025/…

如何不使用代理服务从hugging face上下载大模型?

前言:中国大陆的朋友会发现hugging face经常无法访问了,特别是在服务器上下载大型模型/数据集,如果先在电脑上下载完再传输到服务器上,对于大模型来说会非常麻烦,这篇博客一共提供了三种有效的方法不使用代理服务从hug…

【Java】何为JShell?——有趣的Java学习小工具

前言:上一篇中我们已经看到了如何编译和运行一个Java程序。Java1.9(即Java9)中引入了另一种使用Java的方式。JShell(Java Shell)程序提供了一个“读取-计算-打印循环”(Read-Evaluate-Print Loop,REPL)。当你键入一个J…

【综述】多核处理器芯片

文章目录 前言 Infineon处理器 AURIX™系列 TC399XX-256F300S 典型应用 开发工具 参考资料 前言 见《【综述】DSP处理器芯片》 Infineon处理器 AURIX™系列,基于TriCore内核,用于汽车和工业领域。 XMC™系列,基于ARM Cortex-M内核&…

基于 Evan_song1234 开发,MoonSpaceCat 增补的2D 我的世界,增加双缓冲实现 cmd控制台窗口或 Powershell 流畅运行

游戏玩法: awsd移动 1234567890 各有功能 t 是命令行 q 是刷新 e 是重开 z 是挖 其他还没来及探索代码 代码来源 C我的世界2D控制台版_cminecraft-CSDN博客 其中解决颜色被双缓冲刷新没的方法 参考于自己的博客 用ReadConsoleOutput 解决双缓冲ReadConsol…

短视频素材哪个App最好?短视频素材哪里有免费的?

在数字媒体的黄金时代,富有创意的视频内容已成为吸引观众的关键。高质量的视频素材不仅能增强视觉效果,还能提升整体叙述的力度。以下列出了一系列全球顶尖的视频素材提供网站,它们将为你的广告制作、社交媒体或任何视频项目提供极具影响力的…