一、在HarmonyOS上运行的应用,有两种形态:
-传统方式的需要安装的应用。
-提供特定功能,免安装的应用(即原子化服务)。
二、配置文件cnfig.json
"distro": {
"deliveryWithInstall": true,
"moduleName": "entry",
"moduleType": "entry",
"installationFree": false
},
**installationFree**
表示当前该FA是否支持免安装特性。
true:表示支持免安装特性,且符合免安装约束。
false:表示不支持免安装特性。手机上需要安装app
三、Java开发模式下Abitity和AbilitySlice的生命周期
在HarmonyOS中的Ability(可类比成Android的Activity) 和AbilitySlice(可类比成Android中的Fragment)是页面的基本单元,用户操作或系统管理等行为均会引起页面实例在其生命周期的不同状态之间进行转换 。
页面(Ability)生命周期回顾
- onStart()
当系统首次创建Page实例时,触发该回调。对于一个Page实例,该回调在其生命周期过程中仅触发一次,Page在该逻辑后将进入INACTIVE状态。开发者必须重写该方法,并在此配置默认展示的AbilitySlice。
- onActive() 类似Android中的onResume()
Page会在进入INACTIVE状态后来到前台,然后系统调用此回调。Page在此之后进入ACTIVE状态,该状态是应用与用户交互的状态。Page将保持在此状态,除非某类事件发生导致Page失去焦点,比如用户点击返回键或导航到其他Page。当此类事件发生时,会触发Page回到INACTIVE状态,系统将调用onInactive()回调。此后,Page可能重新回到ACTIVE状态,
- onInactive() 类似Android中的onPause()
当Page失去焦点时,系统将调用此回调,此后Page进入INACTIVE状态。开发者可以在此回调中实现Page失去焦点时应表现的恰当行为。
- onBackground()
如果Page不再对用户可见,系统将调用此回调通知开发者用户进行相应的资源释放,此后Page进入BACKGROUND状态。开发者应该在此回调中释放Page不可见时无用的资源,或在此回调中执行较为耗时的状态保存操作。
- onStop() 类似Android中的onDestory()
系统将要销毁Page时,将会触发此回调函数,通知用户进行系统资源的释放。销毁Page的可能原因包括以下几个方面:
- 用户通过系统管理能力关闭指定Page,例如使用任务管理器关闭Page。
- 用户行为触发Page的terminateAbility()方法调用,例如使用应用的退出功能。
- 配置变更导致系统暂时销毁Page并重建。
- 系统出于资源管理目的,自动触发对处于BACKGROUND状态Page的销毁。
AbilitySlice生命周期
AbilitySlice作为Page的组成单元,其生命周期是依托于其所属Page生命周期的。AbilitySlice和Page具有相同的生命周期状态和同名的回调,当Page生命周期发生变化时,它的AbilitySlice也会发生相同的生命周期变化。
当页面page中发生了AbilitySlice的导航切换时,它的生命周期变化将独立于页面的生命周期变化
AbilitySlice生命周期回调与Page的相应回调类似。由于AbilitySlice承载具体的页面,开发者必须重写AbilitySlice的onStart()回调,并在此方法中通过setUIContent()方法设置页面,如下所示:
@Override
protected void onStart(Intent intent) {
super.onStart(intent);
setUIContent(ResourceTable.Layout_main_layout);
}
举个例子: 同一个 Abil的两个Slice之间的跳转 A->B 的生命周期
1 A->B(A页面进入到B页面)
B中的生命周期:
2 B->A (B页面返回到A页面)
B的生命周期:
3 B页面切换至后台
4 B页面从后台切换至前台