鸿蒙UIAbility组件基础

        

什么是UlAbility:
    包含界面的应用组件,用于和用户进行交互,每个Ability可以包含多个界面。一个APP可以有多个Ability,可以代表不同的具体任务场景,一个Ability可以有多个page,不断的交互来达到一个任务目的,不同Ability也可以交互,UIAbility是整个APP的核心,理解了Ability生命周期,也就理解了用户和应用的交互逻辑。

UIAbility内的页面创建:
    右键新建一个页面
    在resources/base/profile/main_pages.json文件中手动配置路由
    

页面间的跳转:
    通过调用router.pushurl()方法,要提前定义参数类型
    通过调用router.back()放回上一级界面

数据传递:
    传输
    router.pushurl({
    url:'pages/Second'
    params:new routerParam('Index页面传来的数据)
    } )
    
    接受
    通过router.getParams()方法接受参数
    


UIAbility的生命周期:
    UIAbility Start
        Create
            WindowStageCreate
                Foreground
                background
            WindowStageDestroy
        Destroy
    UIAbility End

UIAbility组件得启动模式:
    singleton启动模式,默认
        每次调用startAbility()方法时,如果应用进程中该类型的UIAbility实例已经存在,则复用系统中的UIAbility实例,触发onNewWant()回调,不会进入onCreate()和onWindowStageCreate()回调函数
    multiton启动模式
        multiton启动模式为多实例模式,每次调用 startAbility() 方法时,都会在应用进程中创建一个新的该类型UIAbility实例
    specified启动模式,例如文档的新建和保存
        本质为前两种的混合模式
    

1. 打开文件A,对应启动一个新的UIAbility实例,例如启动UIAbility实例1。
2. 在最近任务列表中关闭文件A的任务进程,此时UIAbility实例1被销毁,回到桌面,再次打开文件A,此时对应启动一个新的UIAbility实例,例如启动UIAbility实例2。
3. 回到桌面,打开文件B,此时对应启动一个新的UIAbility实例,例如启动UIAbility实例3。
4. 回到桌面,再次打开文件A,此时仍然启动之前的UIAbility实例2,因为系统会自动匹配UIAbility实例的Key值,如果存在与之匹配的Key,则会启动与之绑定的UIAbility实例。在此例中,之前启动的UIAbility实例2与文件A绑定的Key是相同的,因此系统会拉回UIAbility实例2并让其获焦,而不会创建新的实例。


UIAbility组件的基本用法:
    指定UIAbility的启动页面
        应用中的UIAbility在启动过程中,需要指定启动页面,否则应用启动后会因为没有默认加载页面而导致白屏。可以在UIAbility的onWindowStageCreate()生命周期回调中,通过WindowStage对象的loadContent()方法设置启动页面。
    获取UIAbility的上下文UIAbilityContext
        可调用接口获取当前页面关联的UIAbilityContext或者ExtensionContext

实现UIAbility组件与UI之间的数据同步:
    使用EventHub进行数据通信
        在基类Context中提供了EventHub对象,可以通过发布订阅方式来实现事件的传递。在事件传递前,订阅者需要先进行订阅,当发布者发布事件时,订阅者将接收到事件并进行相应处理
    使用应用级AppStorage/UIAbility级LocalStorage进行数据同步
        ArkUI提供了AppStorage和LocalStorage两种应用级别的状态管理方案,可用于实现应用级别和UIAbility级别的数据同步


UIAbility组件间交互(设备内) :UIAbility是系统调度的最小单元
    启动应用内的UlAbility
    启动应用内的UIAbility并获取返回结果
    启动其他应用的UIAbility
        显式Want启动 拉起某个明确的UIAbility
        隐式Want启动 开发者通常不知道用户设备中应用的安装情况,也无法确定目标应用的bundleName和abilityName,通常使用隐式Want启动方式
    启动其他应用的UIAbility并获取返回结果
    启动UIAbility的指定页面
        - UIAbility冷启动:指的是UIAbility实例处于完全关闭状态下被启动,这需要完整地加载和初始化UIAbility实例的代码、资源等。
        -
        - UIAbility热启动:指的是UIAbility实例已经启动并在前台运行过,由于某些原因切换到后台,再次启动该UIAbility实例,这种情况下可以快速恢复UIAbility实例的状态。

  • 9
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值