0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

HarmonyOS应用程序Ability的作用

鸿蒙系统HarmonyOS 来源:鸿蒙社区 作者:云昌白晓明 2021-03-17 15:46 次阅读

什么是Ability

Ability意为能力,是HarmonyOS应用程序提供的抽象功能。在Android应用程序中,Activity是整个应用程序的核心,其意为活动。无论是活动还是能力都是一种表述形式,虽然直译后理解起来比较抽象,但如果我们把它们理解为功能,这样就比较方便了。

就目前单一设备而言,我们可以使用手机打电话,发短信,玩游戏等,这些就是手机具有能力。在生活中,能力的体现无处不在,比如电饭煲具有蒸煮煲汤的能力;电视具有播放视频的能力;音响具有外放音乐的能力。

HarmonyOS分布式系统所要实现的不仅仅是单一的能力,它所要达到的效果是能力可以单独存在,可以互相关联,可以彼此调用互相迁移。比如可以将手机端播放的视频迁移到智慧屏,通过大屏来观看视频,同时也可以将视频音效分离到外设音响;通过设备A获取设备B的数据;多设备终端数据同步等。

在HarmonyOS分布式系统中,一切皆能力,能力无大小。在HarmonyOS应用程序中,一个页面即一种能力,如登录页面,即具有登录功能的能力;一个服务即一种能力,如后台播放音乐的能力;一个数据操作即一种能力,如获取数据库数据等。同时能力之间也可以互相调用,通过页面能力来管理后台音效播放与暂停。

面向对象编程中一切皆对象,在HarmonyOS中一切皆能力。

Ability分类

一个HarmonyOS应用程序可以包含一个或多个能力。HarmonyOS应用程序可以以能力为单位进行部署。在HarmonyOS应用程序中将能力分为FA(Feature Ability,即元程序)和PA(Particle Ability,即元服务)两种类型,针对两种类型提供了不同的模板可以在日常业务开发中直接使用。

FA支持Page Ability

FA代表有UI界面的能力,被设计用于与用户交互。直白点就是给用户提供可操作的页面,官方根据不同的业务类型提供了不同种类的模板,比如关于页面、列表页面、个人中心页面等,可以根据不同的使用场景来选择不同的模板,也可以在当前模板的基础上进行修改以达到功能的快速实现。同时也可以调用PA支持的能力,来实现复杂的业务逻辑,比如在新闻内容页面通过Service Ability实现后台自动播放音乐。

PA支持Service Ability 和Data Ability

PA代表没有UI界面的能力,用于支持FA。例如提供数据访问能力作为数据存储。Service Ability提供后台运行任务的能力;Data Ability提供插入、删除、更新、查询及打开文件的能力。

Ability生命周期

能力有四种生命周期状态:INITIAL(初始态)、INACTIVE(未激活)、ACTIVE(激活)、BACKGROUND(后台)。

INITIAL: 初始状态。将即将启动的能力加载到内存中,但不运行。

INACTIVE:未激活状态。前台和后台中间的状态,该状态下UI可见,但不可操作。

ACTIVE:激活状态。当前置于前台页面完整呈现,可交互状态。

BACKGROUND: 不可见状态。也称置于后台,比如A页面跳转到B页面,则B页面呈现,A页面隐藏。这种状态的页面在内存不足情况下会被销毁。

整个完整的生命周期图如下所示(来自官方):

注(翻译错误):图中由于内存不足或用户跳转到该能力之后能力被系统销毁改为系统内存不足等原因导致终止能力,用户重新导航到该能力。

所有页面能力都必须从重写onStart()方法开始,该能力的所有生命周期回调方法如下:

@Override

publicvoidonStart(Intentintent){

super.onStart(intent);

super.setMainRoute(HomeAbilitySlice.class.getName());

}

@Override

protectedvoidonActive(){

super.onActive();

}

@Override

protectedvoidonInactive(){

super.onInactive();

}

@Override

protectedvoidonBackground(){

super.onBackground();

}

@Override

protectedvoidonForeground(Intentintent){

super.onForeground(intent);

}

@Override

protectedvoidonStop(){

super.onStop();

}

这里我们专门写一个页面间跳转来观察能力的生命周期,使用HiLog日志的形式来查看。运行应用程序并点击跳转,然后再返回,日志控制台输出如下所示。

Ability_Lifecycle:MainAbilityonInitialized()方法...

Ability_Lifecycle:MainAbilityonStart()方法...

Ability_Lifecycle:MainAbilityonActive()方法...

Ability_Lifecycle:MainAbilityonInactive()方法...

Ability_Lifecycle:HomeAbilityonInitialized()方法...

Ability_Lifecycle:HomeAbilityonStart()方法...

Ability_Lifecycle:HomeAbilityonActive()方法...

Ability_Lifecycle:MainAbilityonBackground()方法...

Ability_Lifecycle:HomeAbilityonInactive()方法...

Ability_Lifecycle:MainAbilityonForeground()方法...

Ability_Lifecycle:MainAbilityonActive()方法...

Ability_Lifecycle:HomeAbilityonBackground()方法...

Ability_Lifecycle:HomeAbilityonStop()方法...

从日志我们观察到先启动MainAbility,当跳转到HomeAbility时,HomeAbility被激活,而MainAbility进入不可见(也就是后台),当点击返回按钮后,MainAbility回到前台并激活,而HomeAbility将不可见并销毁。

Ability之间跳转

Ability之间的跳转是以意图(Intent)为载体来承载需要对象之间传递的信息。通过封装意图相关的参数(Parameters)和操作(Operation),可以启动或跳转到另一个能力。

Buttonbutton=(Button)findComponentById(ResourceTable.Id_btn);

button.setClickedListener(l->{

Operationoperation=newIntent.OperationBuilder()

.withDeviceId("")

.withBundleName("com.itming.walking.photokit")

.withAbilityName("com.itming.walking.photokit.HomeAbility")

.build();

intent.setOperation(operation);

startAbility(intent);

});

编辑:hfy

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 智慧屏
    +关注

    关注

    2

    文章

    345

    浏览量

    19559
  • HarmonyOS
    +关注

    关注

    79

    文章

    1808

    浏览量

    29256
收藏 人收藏

    评论

    相关推荐

    HarmonyOS应用开发-Ability

    Ability是应用所具备能力的抽象,也是应用程序的重要组成部分。一个应用可以具备多种能力(即可以包含多个Ability),HarmonyOS支持应用以
    发表于 09-24 15:39

    HarmonyOS】应用开发3-HarmonyOS应用程序框架揭秘

    的全场景世界,不愧是HarmonyOS!小编为大家截取了部分HarmonyOS应用开发- HarmonyOS程序应用框架揭秘的资料,先来一见为快吧!看到这里你是否还意犹未尽呢!更多干货
    发表于 10-27 09:44

    应用程序开发

    应用程序开发不少开发者还针对AI Camera、手表做一些应用和前端展示,这里给到的应用程序开发资料可能有所帮助,主要内容有:鸿蒙OS应用程序开发HarmonyOS开发文档(一)
    发表于 11-24 11:58

    HarmonyOS学习之二:鸿蒙HarmonyOS系统架构

    层为HarmonyOS应用程序提供了Java/C/C++/JS等多语言的用户程序框架和Ability框架,以及各种软硬件服务对外开放的多语言框架API;同时为采用
    发表于 11-25 14:46

    HarmonyOS学习之二:鸿蒙HarmonyOS系统架构

    和驱动开发、管理框架。二、系统服务层:系统服务层是HarmonyOS的核心能力集合,通过框架层对应用程序提供服务。该层包含以下几个部分:系统基本能力子系统集:为分布式应用在HarmonyOS多设备上的运行
    发表于 11-25 22:20

    图解鸿蒙Page Ability的LaunchType

    Ability。总之,拥有singleton模式的Page Ability将永远使用唯一的实例;这里涉及到一个栈的概念,这是HarmonyOS管理Page Ability的模式。
    发表于 12-24 09:09

    华为鸿蒙系统教程,HarmonyOS视频教程 专题教程来啦!一起来学习吧!

    ,是应用所具备能力的抽象,也是应用程序的重要组成部分。一个应用可以具备多种能力,也就是说可以包含多个Ability;HamonyOS支持应用以Ability为单位进行部署,Ability
    发表于 01-25 14:26

    HarmonyOS应用开发-Page Ability启动Service Ability

    Page Ablity响应交互,从而调用Service Ability是鸿蒙开发中最常用的交互方式,在Page Ablity使用startAbility(intent)启动Service
    发表于 11-03 10:32

    使用FeatureAbility模块启动其他Ability

    1 前言在HarmonyOS/OpenHarmony应用程序中一切皆Ability(能力),即是每个界面都可以是Ability,每个功能都可以是Ab
    发表于 09-02 15:04

    HarmonyOS原子化服务终端流量入口及接入方式汇总

    终端呈现形式流量入口接入方式手机卡片智慧搜索HarmonyOS AbilityCard AbilityContent Ability智慧服务HarmonyOS AbilityCard
    发表于 10-10 10:56

    HarmonyOS应用相关术语

    便捷服务的用户应用程序形态。原子化服务基于HarmonyOS API开发,支持运行在1+8+N设备上,供用户在合适的场景、合适的设备上便捷使用。ArkUI方舟开发框架,是为HarmonyOS平台开发极简
    发表于 01-06 14:55

    HarmonyOS/OpenHarmony应用开发-ArkTS的Ability基类

    Ability模块提供对Ability生命周期、上下文环境等调用管理的能力,包括Ability创建、销毁、转储客户端信息等。说明 :模块首批接口从API version 9 开始支持。模块接口仅可
    发表于 03-09 15:11

    HarmonyOS鸿蒙系统的入门学习课件免费下载

    Ability 是应用所具备能力的抽象,也是应用程序的重要组成部分。一个应用可以具备多种能力(即可以包含多个 Ability),HarmonyOS 支持应用以
    发表于 10-21 08:00 41次下载
    <b class='flag-5'>HarmonyOS</b>鸿蒙系统的入门学习课件免费下载

    基于HarmonyOS Player类实现的应用程序——Codelab技术

    的编写,再到编译构建、部署和运行全过程。 您将构建一个基于HarmonyOS Player类实现的应用程序,该应用程序功能为播放本地视频资源或从Internet获得的视频资源。效果图如下: 您将会学到什么 ● 如何使用Playe
    的头像 发表于 03-17 15:59 1705次阅读

    HarmonyOS版本下如何基于JS UI框架来开发?

    HarmonyOS应用开发模型 HarmonyOS的用户应用程序包APP由一个或多个Hap包组成。每个Hap可以包含一个或多个AbilityAb
    的头像 发表于 07-13 09:24 1885次阅读