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

鸿蒙Ability对比Android的Fragment

在鸿蒙(HarmonyOS)中,没有直接与 Android 的 Fragment 对应的组件,但可以通过 Ability动态组件加载机制 实现类似的功能。

1. 功能与用途
  • Android Fragment

    • 是一个可以嵌入到 Activity 中的模块化组件,用于构建复杂的用户界面。

    • 支持动态加载、替换和隐藏,适用于多窗格界面或动态界面切换。

  • 鸿蒙 Ability

    • 是鸿蒙应用的基本功能单元,用于定义应用的交互逻辑。

    • 通过 Ability 的动态加载机制,可以实现类似 Fragment 的功能。

2. 生命周期
  • Android Fragment

    • 生命周期方法包括 onCreate()onStart()onResume()onPause()onStop()onDestroy()

    • 生命周期与宿主 Activity 的生命周期相互关联。

  • 鸿蒙 Ability

    • 生命周期方法包括 onStart()onActive()onInactive()onStop()

    • 生命周期与宿主 Ability 的生命周期相互关联。

3. 开发方式
  • Android Fragment

    • 使用 Java 或 Kotlin 编程语言,通过 XML 定义布局。

    • 使用 FragmentManagerFragmentTransaction 来管理 Fragment 的生命周期和事务操作。

  • 鸿蒙 Ability

    • 支持多种编程语言,包括 ArkTS、Java 等。

    • 使用 ArkUI 框架的声明式 UI 开发方式,通过链式写法和组件化设计构建界面。

    • 动态加载组件时,可以通过 NodeController 管理组件的创建、显示和更新。

4. 渲染机制
  • Android Fragment

    • 基于 Android 的 View 系统,使用 Android 的渲染引擎进行界面绘制。

  • 鸿蒙 Ability

    • 使用鸿蒙自研的图形栈进行渲染,支持 Vulkan 等现代图形 API。

    • 动态组件加载机制允许在运行时根据需要加载和渲染组件。

5. 性能与资源占用
  • Android Fragment

    • 在多 Fragment 场景下,可能会导致内存占用较高,尤其是在复杂的界面布局中。

  • 鸿蒙 Ability

    • 鸿蒙系统在资源占用上表现更优,例如鸿蒙版应用通常体积更小,占用存储空间更少。

    • 动态加载机制减少了不必要的资源消耗。

6. 权限管理
  • Android Fragment

    • 权限管理依赖于宿主 Activity,Fragment 本身不直接管理权限。

  • 鸿蒙 Ability

    • 鸿蒙系统在权限管理上更加严格,Ability 只会申请必要的权限,减少了不必要的权限请求。

7. 跨设备适配
  • Android Fragment

    • 需要开发者手动适配不同设备的屏幕尺寸和方向。

  • 鸿蒙 Ability

    • 鸿蒙系统通过分布式设计理念,支持多设备间的无缝流转和适配。

8. 动态加载组件
  • Android Fragment

    • 使用 FragmentTransaction 动态添加、移除或替换 Fragment。

  • 鸿蒙 Ability

    • 使用 NodeController 动态创建和卸载组件。

    • 示例代码:

       class TextNodeController extends NodeController {private textNode: BuilderNode<[Params]> | null = null;private message: string = '';constructor(message: string) {super();this.message = message;}makeNode(context: UIContext): FrameNode | null {return null;}}
9. 对比
特性Android Fragment鸿蒙 Ability(动态加载机制)
功能与用途模块化组件,嵌入 Activity动态加载组件,用于构建复杂界面
生命周期onCreate()onStart()onStart()onActive()
开发方式Java/Kotlin,XML 布局ArkTS、Java,声明式 UI
渲染机制Android 渲染引擎鸿蒙自研图形栈,支持 Vulkan
性能与资源占用内存占用较高,渲染效率一般资源占用低,渲染效率高
权限管理权限依赖宿主 Activity权限管理严格,只申请必要权限
跨设备适配需手动适配不同设备支持多设备无缝流转和适配

综上所述,鸿蒙的 Ability 和动态加载机制虽然没有直接对应 Fragment 的组件,但通过灵活的模块化设计和高效的动态加载机制,实现了类似的功能,并在性能和资源占用方面表现出色。

http://www.xdnf.cn/news/8356.html

相关文章:

  • uniapp编译小程序,不支持:class语法
  • 机器学习第二十五讲:TensorFlow → 乐高式搭建深度学习模型
  • kafka吞吐量提升总结
  • halcon 连接相机
  • 消息队列RabbitMQ与AMQP协议详解
  • oracle数据库生成awr报告,排查数据库服务器CPU100%,系统卡顿,慢sql,根据sqlid查询关键信息,如会话SID,客户端机器名
  • 从零搭建SpringBoot Web单体项目3、SpringBoot 核心组件深度解析
  • leetcode hot100:十三、解题思路大全:多维动态规划(不同路径、最小路径和、最长回文子串、 最长公共子序列、编辑距离)
  • 微信小程序用<web-view 嵌入h5网页,改了h5网页后,可能是缓存的原因,小程序上看还是原来的,怎么处理
  • 【MySQL成神之路】MySQL索引相关介绍
  • 应届本科生简历制作指南
  • MySQL数据 在 磁盘上是什么样子的
  • DiagramJS设计原理解读(二)
  • CUDA 加速的基础线性代数库cuBLAS
  • Issac Lab安装
  • SPL做量化---MFI(资金流量指标)
  • 水陆两栖车,水域救援与陆地行动的桥梁
  • 掌握正则表达式:从基础语法到工程实践
  • Redis--SpringDataRedis详解
  • KCTF-CCG CrackMe crypto 1.0
  • TDengine 高可用——三副本
  • YOLOv5:调用官方权重进行检测
  • Socket套接字概述
  • MFC 中实现动态控件启用与命令执行
  • nRF Connect SDK开发之(1)运行一个Zephyr Project例程
  • Python Web开发基础
  • 并发编程之常用原子类
  • 免费直播预告 | 从标准解读到工具落地,《GB/T 45086与ISO11451标准解读》来了!
  • 前端学习笔记——Promis.All
  • ROS_Noetic的安装