FA 支持 Page Ability:
Page 模板是 FA 唯一支持的模板,用于提供与用户交互的能力 。一个 Page 实例可以包含一组相关页面,每个页面用一个 AbilitySlice 实例表示 。
PA 支持 Service Ability 和 Data Ability:
Service 模板:用于提供后台运行任务的能力 。
Data 模板:用于对外部提供统一的数据访问抽象 。
Service Ability 基本概念基于 Service 模板的 Ability(以下简称“Service”)主要用于后台运行任务(如执行音乐播放、文件下载等),但不提供用户交互界面 。
Service 可由其他应用或 Ability 启动,即使用户切换到其他应用,Service 仍将在后台继续运行 。Service 是单实例的 。在一个设备上,相同的 Service 只会存在一个实例 。如果多个 Ability 共用这个实例,只有当与 Service 绑定的所有 Ability 都退出后,Service 才能够退出 。
由于 Service 是在主线程里执行的,因此,如果在 Service 里面的操作时间过长,开发者必须在 Service 里创建新的线程来处理(详见线程间通信),防止造成主线程阻塞,应用程序无响应 。
Data Ability基本概念使用 Data 模板的 Ability(以下简称“Data”)有助于应用管理其自身和其他应用存储数据的访问,并提供与其他应用共享数据的方法 。Data 既可用于同设备不同应用的数据共享,也支持跨设备不同应用的数据共享 。
数据的存放形式多样,可以是数据库,也可以是磁盘上的文件 。Data 对外提供对数据的增、删、改、查,以及打开文件等接口,这些接口的具体实现由开发者提供 。
备注:以上是一些在进行 Harmony OS app 应用开发过程中会经常涉及到的一些概念的东西,也是非常重要的,有一定的理解后将有利于我们进行系统的开发,所以我整理了一下放到了第二部分 。
Step3:Demo 示例讲解第一部分:程序结构与程序入口

文章插图
如上图所示:entry 是应用的主模块,
1——标识的地方是 Slice 切片,
2——标识的地方是 main 方法所在的类文件,
3——标识的地方是存放样式文件,
4——标识的地方是存放的布局文件 。
第二部分:两个Slice 文件内容
package com.example.myapplication.slice;import com.example.myapplication.ResourceTable;import ohos.aafwk.ability.AbilitySlice;import ohos.aafwk.content.Intent;import ohos.agp.components.Button;import ohos.agp.components.Component;public class MainAbilitySlice extends AbilitySlice {/*onStart()当系统首次创建Page实例时,触发该回调 。对于一个Page实例,该回调在其生命周期过程中仅触发一次,Page在该逻辑后将进入INACTIVE状态 。开发者必须重写该方法,并在此配置默认展示的AbilitySlice 。*/@Overridepublic void onStart(Intent intent) {super.onStart(intent);//ResourceTable相应当selenium中的driver,这里要是在设置布局为 ability_main.xml文件的内容,前面的Layout_是框架规则好的super.setUIContent(ResourceTable.Layout_ability_main);//类似于Python 中selenium中的通过 id 来查找元素,这里的Id_button是ability_main.xml中的button 的id值Button button = (Button) findComponentById(ResourceTable.Id_button);//判断button 是否为nullif(button != null){//给button 设置click监听事件button.setClickedListener(new Component.ClickedListener() {@Overridepublic void onClick(Component component) {//这里相当于是render另一个页面(这里传入了一个SecondAbilitySlice and Intent),实现了页面的跳转present(new SecondAbilitySlice(),new Intent());}});}}/*onActive()Page会在进入INACTIVE状态后来到前台,然后系统调用此回调 。Page在此之后进入ACTIVE状态,该状态是应用与用户交互的状态 。Page将保持在此状态,除非某类事件发生导致Page失去焦点,比如用户点击返回键或导航到其他Page 。当此类事件发生时,会触发Page回到INACTIVE状态,系统将调用onInactive()回调 。此后,Page可能重新回到ACTIVE状态,系统将再次调用onActive()回调 。因此,开发者通常需要成对实现onActive()和onInactive(),并在onActive()中获取在onInactive()中被释放的资源 。*/@Overridepublic void onActive() {super.onActive();}/*onForeground()处于BACKGROUND状态的Page仍然驻留在内存中,当重新回到前台时(比如用户重新导航到此Page),系统将先调用onForeground()回调通知开发者,而后Page的生命周期状态回到INACTIVE状态 。开发者应当在此回调中重新申请在onBackground()中释放的资源,最后Page的生命周期状态进一步回到ACTIVE状态,系统将通过onActive()回调通知开发者用户 。*/@Overridepublic void onForeground(Intent intent) {super.onForeground(intent);}}package com.example.myapplication.slice;import ohos.aafwk.ability.AbilitySlice;import ohos.aafwk.content.Intent;//import ohos.global.systemres.ResourceTable;import com.example.myapplication.ResourceTable;import ohos.agp.components.Button;import ohos.agp.components.Component;import ohos.agp.components.Text;import ohos.hiviewdfx.HiLog;import ohos.hiviewdfx.HiLogLabel;public class SecondAbilitySlice extends AbilitySlice {private static final int MY_MODULE = 200;@Overrideprotected void onStart(Intent intent) {super.onStart(intent);super.setUIContent(ResourceTable.Layout_ability_second_slice);Text text = (Text) findComponentById(ResourceTable.Id_second_text);if(text != null){String myname = intent.getStringParam("name");final HiLogLabel label = new HiLogLabel(HiLog.LOG_APP, MY_MODULE, "MY_TAG_Tony"); //MY_MODULE=0x00201HiLog.info(label, "the myname is:", myname);}//这里跟MailAbilitySlice中的作用一样,找button元素,这个元素就是Go BackButton button=(Button) findComponentById(ResourceTable.Id_seconde_button);if(button != null){button.setClickedListener(new Component.ClickedListener() {@Overridepublic void onClick(Component component) {present(new MainAbilitySlice(),new Intent());}});}}}
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Windows操作系统|最重要Windows 11更新要来了:微软将敲定22H2时间 修复重大Bug
- 鸿蒙APP开发:如何实现“百度地图”的显示?需要3项认真操作才行
- 小白如何看出计算机操作系统是否开启勒索病毒危险端口
- 小白是如何让Kali Linux操作系统从U盘成功启动
- 云服务器选操作系统
- Windows操作系统|Win11内忧外患!竞争对手虎视眈眈
- linux 国产操作系统deepin系统从安装到惊喜
- 荣耀升级鸿蒙后怎么样?
- 白帽黑客教你Windows主机操作系统安全加固
- magic4.2是鸿蒙系统吗?magic4.0是鸿蒙吗
