鸿蒙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 定义布局。

    • 使用 FragmentManager 和 FragmentTransaction 来管理 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 的组件,但通过灵活的模块化设计和高效的动态加载机制,实现了类似的功能,并在性能和资源占用方面表现出色。

相关推荐
传奇开心果5 小时前
【Flutter踩坑排雷】第3课:const 误用坑|const 错误使用引发 UI 异常与性能损耗
android·flutter
哲鲤5 小时前
AOSP思绎|Android 多媒体:一段视频为什么需要这么多服务
android
阿杰m5 小时前
Android源码第三章:Handler、Looper 与 MessageQueue——一条消息如何入队、唤醒并执行
android
贾伟康5 小时前
【共创稿事节】HarmonyOS 7.0 BindContentCover全屏模态:从接入到生产验证
性能优化·实战·harmonyos·arkts·arkui
KevinChaos7 小时前
声音明信片实验室 03|HarmonyOS 7.0 音频空间化:双版本试听无缝切换
harmonyos
海雅达手持终端PDA8 小时前
巡线、深井、爆管抢修与极寒水网的硬件矩阵怎么配?海雅达水务巡检终端PDA选型指南
android·物联网·5g·集成测试·能源·政务
贾伟康8 小时前
【共创稿事节】HarmonyOS 7.0 Menu菜单与上下文:从接入到生产验证
性能优化·实战·harmonyos·arkts·arkui
码间留白8 小时前
鸿蒙端对接 BLE 血压计:从一次握手到读数入库(二)设备篇
物联网·uni-app·鸿蒙·蓝牙ble·血压计
行者-全栈开发9 小时前
Flutter 插件 device_calendar_plus 开源鸿蒙适配实战:从权限弹窗失灵到循环日程跑通
flutter·跨平台·harmonyos·arkts·日历·适配·开源鸿蒙
恋猫de小郭10 小时前
Flutter 开始支持 Jetpack Compose Platform View
android·前端·flutter