Ability
Ability是HarmonyOS应用程序可以提供的功能的抽象。HarmonyOS应用程序的能力分为两种类型: Feature Ability 和 Particle Ability。Feature Ability 代表具有UI的功能,并旨在与用户进行交互。Particle Ability表示没有UI的能力,并且主要用于提供对FA的支持,例如,提供计算功能作为后台服务或提供数据访问功能作为数据存储库。两种功能为您提供了不同的模板,以供您实现不同的功能。当前,HarmonyOS提供以下类型的能力模板:
注意:在下面的描述中,页面,服务或数据功能表示使用相应模板的功能,而单独的功能表示使用任何类型的模板的功能。
页面:显示UI的功能。UI通过AbilitySlice呈现。您必须重写onStart(ohos.aafwk.content.Intent)方法,并使用setMainRoute(java.lang.String)和addActionRoute(java.lang.String,java.lang.String)方法来配置Page功能的条目。
服务:一种在后台运行且没有UI的功能。它用于开发始终在后台运行或与其他功能连接的服务。当服务能力与其他能力连接时,将返回一个远程对象,您可以使用该远程对象来调用该服务能力提供的功能。
数据:一种用于操作数据且没有UI的功能。它提供了用于插入,删除,更新和查询数据以及打开文件的方法。您必须实现这些方法。
Ability简介
每个应用程序都有一个配置文件:config.json。该文件存储在Java代码的根目录中。
应用程序文件结构的说明如下:
该条目存储应用程序的代码,资源文件和配置文件。文件夹名称是可编辑的。
entry / libs存储第三方库文件。创建项目时,IDE将自动生成此目录。
entry / src / main / java用于代码开发。您可以根据需要在此目录中更改文件名。创建项目时,IDE将自动生成此目录。
entry / src / main / resources / base / media为您的应用程序存储PNG和JPG图像文件。创建项目时,IDE将自动生成此目录。
entry / src / main / resources / base / element存储用于读取文本资源的资源文件。创建项目时,IDE将自动生成此目录。
该入口/ src目录/主/ config.json文件位于主根目录。该文件包含有关应用程序的配置信息。系统运行该应用程序,并基于此文件的内容在UI上显示内容。创建项目时,IDE将自动生成此文件。
要开发新能力,您必须在config.json文件中注册该能力。示例代码:
{ “module”:{ … “abilities”:[ { … “description”: “Main ability of hiworld”, “name”: “.MainAbility”, “label”: “main ability”, “icon”: “main-ability.png”, “type”: “page”, “visible”: true, “orientation”: “unspecified”, “launch-mode”: “standard”, … } ] … } }
注意:应用程序的所有功能都必须在此文件中注册,并附加到功能标签上。
类型标签指示能力使用的模板的类型,其值页面,服务或提供者分别指示页面,服务或数据模板。必须指定类型标签。名称标签表示能力的名称,必须指定。您可以保留其他标签的默认值。 能力生命周期
作为应用程序的基本单元,功能具有以下四个生命周期状态:
初始:该异能已加载到内存中但未运行。这是所有能力的初始状态。不活跃:该功能已加载并执行,但不是交互式的。通常,在能力更改为ACTIVE或Background之前处于中间状态。在这种状态下,UI可能可见,但无法接收输入事件。活动:该功能可见且具有交互性。认为该能力具有焦点。背景:这种能力是看不见的。如果系统内存不足,则会首先破坏此状态下的功能。
下图显示了完整的能力生命周期。每个状态转换都会执行一个特定的回调。您可以覆盖回调方法。
未经授权禁止转载 更多技术交流请加入QQ群
群名称:harmonyos鸿蒙技术交流
群 号:856567895
注意:所有页面功能都必须实现onStart(ohos.aafwk.content.Intent)来设置其UI。要覆盖生命周期回调方法,必须首先调用与父类相对应的回调方法,例如super.onStart()。状态转换在主线程上实现。因此,建议您在生命周期回调中执行简短逻辑,以防止该功能的主线程被阻塞。
public class MainAbility extends Ability { protected void onStart(Intent intent); protected void onActive(); protected void onInactive(); protected void onForeground(Intent intent); protected void onBackground(); protected void onStop(); } Button button = new Button(this); button.setClickedListener(listener -> { Operation operation = new Intent.OperationBuilder() .withDeviceId(“”) .withBundleName(“com.huawei.hiworld”) .withAbilityName(“com.huawei.hiworld.MainAbility”) .build(); Intent intent = new Intent(); intent.setOperation(operation); intent.setParam(“age”, 10); startAbility(intent); });
对于服务功能,您可以重写onConnect(ohos.aafwk.content.Intent)方法以提供一个RemoteObject进行调用。默认情况下,返回null。
protected IRemoteObject onConnect(Intent intent) { return null; } 未经授权禁止转载 更多技术交流请加入QQ群
群名称:harmonyos鸿蒙技术交流
群 号:856567895
从零开始入门学习HarmonyOS鸿便宜香港vps蒙2.0开发 原创 HarmonyOS 鸿蒙入门教程之01 基础环境和开发工具 (教程含源码)原创 HarmonyOS 鸿蒙开发之02开发工具安装原创 HarmonyOS 鸿蒙入门教程之03 运行开发工具完成基础配置DevEco Studio(教程含源码)原创 HarmonyOS鸿蒙开发之04 运行第一个hello world (教程含源码)原创 HarmonyOS鸿蒙开发之05 运行第一个页面 (教程含源码)原创 HarmonyOS鸿蒙开发之06 通过代码创建页面 Feature Ability(教程含源码)原创 HarmonyOS鸿蒙开发之07 编程实现页面跳转(教程含源码) 54951786