码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 鸿蒙HarmonyOS实战-Stage模型(ExtensionAbility组件)


    合集 - 鸿蒙入门实战全套(核心知识点)(43)
    1.鸿蒙HarmonyOS实战-ArkTS语言(基本语法)03-202.鸿蒙HarmonyOS实战-ArkTS语言(状态管理)03-213.鸿蒙HarmonyOS实战-ArkTS语言(渲染控制)03-214.鸿蒙HarmonyOS实战-ArkUI组件(Row/Column)03-225.鸿蒙HarmonyOS实战-ArkUI组件(Stack)03-236.鸿蒙HarmonyOS实战-ArkUI组件(Flex)03-247.鸿蒙HarmonyOS实战-ArkUI组件(RelativeContainer)03-258.鸿蒙HarmonyOS实战-ArkUI组件(GridRow/GridCol)03-269.鸿蒙HarmonyOS实战-ArkUI组件(mediaquery)03-2710.鸿蒙HarmonyOS实战-ArkUI组件(List)03-2911.鸿蒙HarmonyOS实战-ArkUI组件(Grid/GridItem)03-2912.鸿蒙HarmonyOS实战-ArkUI组件(Swiper)03-3013.鸿蒙HarmonyOS实战-ArkUI组件(Button)04-0114.鸿蒙HarmonyOS实战-ArkUI组件(Radio)04-0215.鸿蒙HarmonyOS实战-ArkUI组件(Toggle)04-0216.鸿蒙HarmonyOS实战-ArkUI组件(Progress)04-0317.鸿蒙HarmonyOS实战-ArkUI组件(Text/Span)04-0318.鸿蒙HarmonyOS实战-ArkUI组件(TextInput/TextArea)04-0719.鸿蒙HarmonyOS实战-ArkUI组件(CustomDialog)04-0820.鸿蒙HarmonyOS实战-ArkUI组件(Video)04-0921.鸿蒙HarmonyOS实战-ArkUI组件(Popup)04-1022.鸿蒙HarmonyOS实战-ArkUI组件(Menu)04-1123.鸿蒙HarmonyOS实战-ArkUI组件(页面路由)04-1224.鸿蒙HarmonyOS实战-ArkUI组件(Navigation)04-1325.鸿蒙HarmonyOS实战-ArkUI组件(Tabs)04-1526.鸿蒙HarmonyOS实战-ArkUI组件(Image)04-1627.鸿蒙HarmonyOS实战-ArkUI组件(Shape)04-1728.鸿蒙HarmonyOS实战-ArkUI组件(Canvas)04-1829.鸿蒙HarmonyOS实战-ArkUI动画(布局更新动画)04-1930.鸿蒙HarmonyO实战-ArkUI动画(组件内转场动画)04-2031.鸿蒙HarmonyOS实战-ArkUI动画(放大缩小视图)04-2332.鸿蒙HarmonyOS实战-ArkUI动画(页面转场动画)04-2433.鸿蒙HarmonyOS实战-ArkUI事件(触屏事件)04-2534.鸿蒙HarmonyOS实战-ArkUI事件(键鼠事件)04-2635.鸿蒙HarmonyOS实战-ArkUI事件(焦点事件)05-0736.鸿蒙HarmonyOS实战-ArkUI事件(手势方法)05-0837.鸿蒙HarmonyOS实战-ArkUI事件(单一手势)05-0938.鸿蒙HarmonyOS实战-ArkUI事件(组合手势)05-1239.鸿蒙HarmonyOS实战-Stage模型(概述和组件配置)05-1340.鸿蒙HarmonyOS实战-Stage模型(UIAbility组件)05-14
    41.鸿蒙HarmonyOS实战-Stage模型(ExtensionAbility组件)05-15
    42.鸿蒙HarmonyOS实战-Stage模型(服务卡片介绍和运行机制)05-1643.鸿蒙HarmonyOS实战-Stage模型(服务卡片的模块和创建)05-17
    收起

    🚀一、ExtensionAbility组件

    🔎1.概念

    HarmonyOS中的ExtensionAbility组件是一种能够扩展系统功能的能力组件。它可以通过扩展系统能力接口,为应用程序提供一些特定的功能,以满足应用程序的特殊需求。

    ExtensionAbility组件的特点包括:

    1. 系统组件:ExtensionAbility是一种系统级组件,可以通过系统能力管理器进行注册和管理。
    2. 功能扩展:ExtensionAbility通过扩展系统能力接口,为应用程序提供一些特定的功能,如地理位置、传感器、网络访问等。
    3. 生命周期管理:ExtensionAbility具有自己的生命周期管理,可以根据应用程序的需要进行启动、停止和销毁。
    4. 权限控制:ExtensionAbility可以通过权限控制机制限制应用程序对系统能力的访问权限,保护用户的隐私和安全。
    5. 多样性:HarmonyOS支持多种类型的ExtensionAbility,包括Ability、ServiceAbility、DataAbility等,可以根据应用程序的需求灵活选择。
      通过使用ExtensionAbility组件,开发者可以更好地与系统进行集成,提供更丰富的功能和体验。

    支持的ExtensionAbility类型有:

    image

    还有其他可以参考官方文档:https://developer.harmonyos.com/cn/docs/documentation/doc-references-V3/js-apis-bundlemanager-0000001427585060-V3#ZH-CN_TOPIC_0000001573928977__extensionabilitytype

    image

    🔎2.FormExtensionAbility

    FormExtensionAbility为卡片扩展模块,提供卡片创建、销毁、刷新等生命周期回调。

    🦋2.1 基本概念

    import FormExtensionAbility from '@ohos.app.form.FormExtensionAbility';
    

    image

    🦋2.2 onAddForm

    onAddForm()是卡片提供方接收创建卡片的通知接口,onAddForm方法用于处理添加表单的事件。当应用程序在系统中添加一个新的表单时,系统会调用这个方法来通知应用程序。

    在onAddForm方法中实现具体的处理逻辑,例如创建表单对应的页面或者更新现有的表单内容。可以使用FormBindingData对象来获取表单的数据,FormBindingData对象包含了表单的各个字段的值。

    import FormExtensionAbility from '@ohos.app.form.FormExtensionAbility';
    import formBindingData from'@ohos.app.form.formBindingData';
    
    export default class MyFormExtensionAbility extends FormExtensionAbility {
      onAddForm(want) {
        console.log('FormExtensionAbility onAddForm, want:' + want.abilityName);
        let dataObj1 = {
          temperature:'11c',
          'time':'11:00'
        };
        let obj1 = formBindingData.createFormBindingData(dataObj1);
        return obj1;
      }
    }
    

    image

    🦋2.3 onCastToNormalForm

    onCastToNormalForm()是卡片提供方接收临时卡片转常态卡片的通知接口,onCastToNormalForm()方法用于将扩展表单转换为普通表单的回调方法。当用户选择将扩展表单转换为普通表单时,系统会调用此方法。

    在该方法中,开发者可以执行以下操作:

    • 停止扩展表单的任何后台任务或计时器。
    • 释放扩展表单的资源。
    • 将扩展表单转换为普通表单。
    export default class MyFormExtensionAbility extends FormExtensionAbility {
      onCastToNormalForm(formId) {
        console.log('FormExtensionAbility onCastToNormalForm, formId:' + formId);
      }
    }
    

    image

    🦋2.4 onUpdateForm

    onUpdateForm()是卡片提供方接收更新卡片的通知接口。获取最新数据后调用formProvider的updateForm接口刷新卡片数据,

    onUpdateForm方法具有以下特点:

    • onUpdateForm方法是在表单数据发生改变时触发的回调方法。
    • onUpdateForm方法有两个参数:参数一为表单的全局唯一标识符formId,参数二为表单的数据。
    • onUpdateForm可以通过formId来判断是哪个表单发生了改变,从而进行相应的处理。
    • onUpdateForm方法中可以对表单数据进行处理,例如更新UI界面或者进行其他相关操作。
    import FormExtensionAbility from '@ohos.app.form.FormExtensionAbility';
    import formBindingData from '@ohos.app.form.formBindingData';
    import formProvider from '@ohos.app.form.formProvider';
    
    export default class MyFormExtensionAbility extends FormExtensionAbility {
      onUpdateForm(formId) {
        console.log('FormExtensionAbility onUpdateForm, formId: ${formId}');
        let obj2 = formBindingData.createFormBindingData({
          temperature: '22c',
          time: '22:00'
        });
        formProvider.updateForm(formId, obj2).then((data) => {
          console.log('FormExtensionAbility context updateForm, data: ${data}');
        }).catch((error) => {
          console.error('Operation updateForm failed. Cause: ${error}');
        });
      }
    };
    

    image

    🦋2.5 onChangeFormVisibility

    onChangeFormVisibility()是卡片提供方接收修改可见性的通知接口,onChangeFormVisibility方法是在扩展页面的可见性发生变化时被调用的回调方法。当扩展页面从不可见状态变为可见状态,或者从可见状态变为不可见状态时,该方法会被自动调用。

    该方法的原型是:

    public void onChangeFormVisibility(boolean isVisible)
    

    在方法中,可以根据isVisible参数的值来执行相应的操作。当isVisible为true时,表示扩展页面变为可见状态,可以进行相关的UI更新和数据加载等操作。当isVisible为false时,表示扩展页面变为不可见状态,可以进行相关的资源释放和停止后台任务等操作。

    import FormExtensionAbility from '@ohos.app.form.FormExtensionAbility';
    import formBindingData from '@ohos.app.form.formBindingData';
    import formProvider from '@ohos.app.form.formProvider';
    
    export default class MyFormExtensionAbility extends FormExtensionAbility {
      onChangeFormVisibility(newStatus) {
        console.log('FormExtensionAbility onChangeFormVisibility, newStatus: ${newStatus}');
        let obj2 = formBindingData.createFormBindingData({
          temperature: '22c',
          time: '22:00'
        });
    
        for (let key in newStatus) {
          console.log('FormExtensionAbility onChangeFormVisibility, key: ${key}, value= ${newStatus[key]}');
          formProvider.updateForm(key, obj2).then((data) => {
            console.log('FormExtensionAbility context updateForm, data: ${data}');
          }).catch((error) => {
            console.error('Operation updateForm failed. Cause: ${error}');
          });
        }
      }
    };
    

    image

    🦋2.6 onFormEvent

    onFormEvent()是卡片提供方接收处理卡片事件的通知接口,onFormEvent()方法是用来处理表单事件的回调方法。

    表单事件包括表单创建、表单更新和表单销毁三种类型。当有这些事件发生时,系统会调用FormExtensionAbility的onFormEvent()方法,并将相应的事件类型和表单事件对象作为参数传递给该方法。

    可以重写onFormEvent()方法,根据事件类型来处理相应的业务逻辑。比如,在表单创建事件中,可以通过表单事件对象获取表单实例,并进行初始化操作;在表单更新事件中,可以根据表单事件对象获取更新后的表单数据,并进行界面刷新等操作;在表单销毁事件中,可以进行资源释放等清理工作。

    export default class MyFormExtension extends FormExtensionAbility {
      onFormEvent(formId, message) {
        console.log('FormExtensionAbility onFormEvent, formId:' + formId + ', message:' + message);
      }
    }
    

    image

    🦋2.7 onRemoveForm

    onRemoveForm()是卡片提供方接收销毁卡片的通知接口,onRemoveForm方法用于在扩展中移除表单时进行处理。当主应用或者其他应用移除了扩展中的一个表单时,该方法会被调用。

    具体来说,onRemoveForm方法的作用是在表单被移除时执行一些清理工作,例如释放资源、取消注册监听器等等。开发者可以重写此方法,根据实际需求来进行处理。

    export default class MyFormExtensionAbility extends FormExtensionAbility {
      onRemoveForm(formId) {
        console.log('FormExtensionAbility onRemoveForm, formId:' + formId);
      }
    }
    

    image

    🦋2.8 onConfigurationUpdate

    onConfigurationUpdate()是当系统配置更新时调用,onConfigurationUpdate方法用于处理配置更新的逻辑。当系统配置(例如屏幕方向、语言等)发生变化时,系统会调用该方法。

    onConfigurationUpdate方法有一个参数,即新的Configuration对象。开发者可以通过该对象获取最新的配置信息,并根据需要进行相应的处理,例如重新加载界面、更新数据等。

    class MyFormExtensionAbility extends FormExtensionAbility {
      onConfigurationUpdate(config) {
        console.log('onConfigurationUpdate, config:' + JSON.stringify(config));
      }
    }
    

    image

    🦋2.9 onAcquireFormState

    onAcquireFormState()是卡片提供方接收查询卡片状态通知接口,默认返回卡片初始状态,FormExtensionAbility的onAcquireFormState()方法用于获取表单的状态。

    具体来说,当扩展表单Ability首次启动时,onAcquireFormState()会被调用。开发者可以在此方法中获取表单的初始状态,并返回给系统。

    import formInfo from '@ohos.app.form.formInfo';
    class MyFormExtensionAbility extends FormExtensionAbility {
      onAcquireFormState(want) {
        console.log('FormExtensionAbility onAcquireFormState, want:' + want);
        return formInfo.FormState.UNKNOWN;
      }
    }
    

    image

    🔎3.WorkSchedulerExtensionAbility

    WorkSchedulerExtensionAbility主要是延迟任务调度回调

    🦋3.1 导入模块

    import WorkSchedulerExtensionAbility from '@ohos.WorkSchedulerExtensionAbility'
    

    🦋3.2 onWorkStart

    onWorkStart()是延迟任务调度开始回调,onWorkStart方法是当一个定时任务开始时被调用的。当定时任务启动时,系统会调用该方法来执行相关的逻辑操作。

    export default class MyWorkSchedulerExtensionAbility extends WorkSchedulerExtensionAbility {
        onWorkStart(workInfo) {
            console.log('MyWorkSchedulerExtensionAbility onWorkStart' + JSON.stringify(workInfo));
        }
    }
    

    image

    🦋3.3 onWorkStop

    onWorkStart()是延迟任务调度开始回调,onWorkStop方法是在工作调度停止时被调用的。在该方法中,开发者可以处理一些在工作停止时需要执行的逻辑。

    export default class MyWorkSchedulerExtensionAbility extends WorkSchedulerExtensionAbility {
        onWorkStop(workInfo) {
            console.log('MyWorkSchedulerExtensionAbility onWorkStop' + JSON.stringify(workInfo));
        }
    }
    

    image

    🚀写在最后

    • 如果你觉得这篇内容对你还蛮有帮助,我想邀请你帮我三个小忙:
    • 点赞,转发,有你们的 『点赞和评论』,才是我创造的动力。
    • 关注小编,同时可以期待后续文章ing🚀,不定期分享原创知识。
    • 更多鸿蒙最新技术知识点,请关注作者博客:https://t.doruo.cn/14DjR1rEY

    image

  • 相关阅读:
    【网站项目】437物流管理系统
    MindSpore:一文带你入门虚拟遗憾最小化CFR算法
    php笔记1
    Oracle第二篇:删除索引提示ORA-01408:索引不存在
    MySQL 用户权限和远程访问设置
    后端跨域支持
    CentOS7通过yum安装RabbitMQ3.9.10
    idea中maven优先从本地仓库寻找依赖包的配置
    一体化测试指标可视工程实践
    静态代理和动态代理
  • 原文地址:https://www.cnblogs.com/shudaoshan/p/18194855
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号