赞
踩
最近学习Ability这个东西,说实话有点难搞,所以在这里整理一下并分享。
官方:Ability是应用所具备能力的抽象,也是应用程序的重要组成部分。一个应用可以具备多种能力(即可以包含多个Ability),HarmonyOS支持应用以Ability为单位进行部署。Ability可以分为FA(Feature Ability)和PA(Particle Ability)两种类型,每种类型为开发者提供了不同的模板,以便实现不同的业务功能。
仅个人理解:Ability可以分为FA(Feature Ability)和PA(Particle Ability)两种类型
1.FA(Feature Ability)可以比作你打开一个应用里面的各种页面,然后这些页面,组成了一个应用这里的FA其实可以约等于为Page Ability约等于page
,因为我们在建立FA的时候,他会自动关联Slice,然后多余的AbilitySlice可以通过addActionRoute()方法来添加。
2.PA(Particle Ability)其中PA支持Service Ability和Data Ability,然后这两个我基于官方文档所理解的是它们都是为前面FA所服务的,为FA提供数据支持,后台运行的能力
关于Page Ability的生命周期其实看懂官方文档的一张图片就能搞懂,往下看
要搞清page跳转时,所发生的一切,我们先写一个跳转代码,然后做好日志,不会的小伙伴看下面的文章
【鸿蒙征程】五.实现页面的跳转✨有参,无参,返回值✨
写日志:
将下面的代码放在主类里面
private static final HiLogLabel TAG = new HiLogLabel(HiLog.DEBUG, 0x0, MainAbility.class.getName());
static final HiLogLabel LOG_LABEL =
new HiLogLabel(HiLog.LOG_APP, 0x10001,"MainAbility");
MainAbility的onStart代码跳转
public void onStart(Intent intent) {
super.onStart(intent);
super.setUIContent(ResourceTable.Layout_ability_main);
// 点击事件的监听
text = (Text) findComponentById(ResourceTable.Id_text_helloworld);
text.setClickedListener(Component -> {
Intent intent1 = new Intent();
ElementName mainAbility2 = new ElementName("", "com.harmony.hms3","MainAbility2");
intent1.setElement(mainAbility2);
startAbility(intent1);
});
}
Ctrl+o,调用这些方法,onStart原本就有了。不用再次调用,把下面的代码放在onStart方法的下面,大家最好自己用Ctrl+o调用,加深印象
@Override protected void onActive() { HiLog.info(LOG_LABEL,"+++++onActive"); super.onActive(); } @Override protected void onInactive() { super.onInactive(); HiLog.info(LOG_LABEL,"+++++++onInactive"); } @Override protected void onBackground() { super.onBackground(); HiLog.info(LOG_LABEL,"+++++onBackground"); } @Override protected void onForeground(Intent intent) { super.onForeground(intent); HiLog.info(LOG_LABEL,"+++++onForeground"); } @Override protected void onStop() { super.onStop(); HiLog.info(LOG_LABEL,"+++++onStop"); }
对这些方法进行重写,然后呢每个方法上面加一个日志。日志里面就放这些方法的名字就行了,还有容易找到的特殊符号
初始状态:
INACTIVE状态是一种短暂存在的状态,可理解为“激活中
”
初始状态INITIAL—>到onStart方法—>进入INACTIVE方法—>调用onActive方法—>再到激活状态ACTIVE
HiLog日志输出:
上一个过程已经到达了ACTIVE的状态。紧接着
然后点击“你好,世界”,跳转到下一个页面“hello1111”
也就是由ACTIVE -->到onInactive(),在到达INACTIVE时,与此同时我们马上点击返回,马上回到“你好,世界”的界面,然后又到达onActive(),可以看到日志输出了这两个我打的记号。
在第二阶段我们回到了ACTIVE的状态,也就是第一步的状态,接下来我们点击“hello,world”,不返回,就停留在这个界面
然后日志就输出了,下面两个+++++++onInactive和+++++onBackground
在第三阶段的基础上,我们再返回到“你好,世界”的界面,BACKGROUD–>onForegroud()方法–>再到INACTIVE状态–>又调用onActive方法,
再来看如何用onStop()方法
首先在“你好,世界”的界面,然后返回到桌面,又可以看到日志输出了三个记号,因为从ACTIVE开始到返回桌面这个过程要经过onInactive–>INACTIVE–>onBackground–>onStop,就这个过程
page页面总共4个状态,在程序运行时这几个状态来回的不停的切换:初始状态-->非激活状态-->激活状态-->后台BACKGROUND状态
在状态切换时又有几个方法在调用:onStart(),onActive(),onInactive(),onBackground(),onForeground(),onStop()
本文含个人理解,如有不恰当欢迎来指正,qq:2024810652,还有实在看不明白,我这有完整源码,拿去运行就行了
如果对你有帮助,给个赞吧
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。