一舶胀、在HarmonyOS上運(yùn)行的應(yīng)用,有兩種形態(tài):
-傳統(tǒng)方式的需要安裝的應(yīng)用。
-提供特定功能懒棉,免安裝的應(yīng)用(即原子化服務(wù))。
二览绿、配置文件cnfig.json
"distro": {
"deliveryWithInstall": true,
"moduleName": "entry",
"moduleType": "entry",
"installationFree": false
},
**installationFree**
表示當(dāng)前該FA是否支持免安裝特性策严。
true:表示支持免安裝特性,且符合免安裝約束饿敲。
false:表示不支持免安裝特性妻导。手機(jī)上需要安裝app
三、Java開發(fā)模式下Abitity和AbilitySlice的生命周期
在HarmonyOS中的Ability(可類比成Android的Activity) 和AbilitySlice(可類比成Android中的Fragment)是頁(yè)面的基本單元怀各,用戶操作或系統(tǒng)管理等行為均會(huì)引起頁(yè)面實(shí)例在其生命周期的不同狀態(tài)之間進(jìn)行轉(zhuǎn)換 倔韭。
頁(yè)面(Ability)生命周期回顧
- onStart()
當(dāng)系統(tǒng)首次創(chuàng)建Page實(shí)例時(shí),觸發(fā)該回調(diào)瓢对。對(duì)于一個(gè)Page實(shí)例寿酌,該回調(diào)在其生命周期過(guò)程中僅觸發(fā)一次,Page在該邏輯后將進(jìn)入INACTIVE狀態(tài)硕蛹。開發(fā)者必須重寫該方法醇疼,并在此配置默認(rèn)展示的AbilitySlice。
- onActive() 類似Android中的onResume()
Page會(huì)在進(jìn)入INACTIVE狀態(tài)后來(lái)到前臺(tái)法焰,然后系統(tǒng)調(diào)用此回調(diào)秧荆。Page在此之后進(jìn)入ACTIVE狀態(tài),該狀態(tài)是應(yīng)用與用戶交互的狀態(tài)埃仪。Page將保持在此狀態(tài)乙濒,除非某類事件發(fā)生導(dǎo)致Page失去焦點(diǎn),比如用戶點(diǎn)擊返回鍵或?qū)Ш降狡渌鸓age贵试。當(dāng)此類事件發(fā)生時(shí)琉兜,會(huì)觸發(fā)Page回到INACTIVE狀態(tài),系統(tǒng)將調(diào)用onInactive()回調(diào)毙玻。此后豌蟋,Page可能重新回到ACTIVE狀態(tài),
- onInactive() 類似Android中的onPause()
當(dāng)Page失去焦點(diǎn)時(shí)桑滩,系統(tǒng)將調(diào)用此回調(diào)梧疲,此后Page進(jìn)入INACTIVE狀態(tài)允睹。開發(fā)者可以在此回調(diào)中實(shí)現(xiàn)Page失去焦點(diǎn)時(shí)應(yīng)表現(xiàn)的恰當(dāng)行為。
- onBackground()
如果Page不再對(duì)用戶可見(jiàn)幌氮,系統(tǒng)將調(diào)用此回調(diào)通知開發(fā)者用戶進(jìn)行相應(yīng)的資源釋放缭受,此后Page進(jìn)入BACKGROUND狀態(tài)。開發(fā)者應(yīng)該在此回調(diào)中釋放Page不可見(jiàn)時(shí)無(wú)用的資源该互,或在此回調(diào)中執(zhí)行較為耗時(shí)的狀態(tài)保存操作米者。
- onStop() 類似Android中的onDestory()
系統(tǒng)將要銷毀Page時(shí),將會(huì)觸發(fā)此回調(diào)函數(shù)宇智,通知用戶進(jìn)行系統(tǒng)資源的釋放蔓搞。銷毀Page的可能原因包括以下幾個(gè)方面:
- 用戶通過(guò)系統(tǒng)管理能力關(guān)閉指定Page,例如使用任務(wù)管理器關(guān)閉Page随橘。
- 用戶行為觸發(fā)Page的terminateAbility()方法調(diào)用喂分,例如使用應(yīng)用的退出功能。
- 配置變更導(dǎo)致系統(tǒng)暫時(shí)銷毀Page并重建机蔗。
- 系統(tǒng)出于資源管理目的蒲祈,自動(dòng)觸發(fā)對(duì)處于BACKGROUND狀態(tài)Page的銷毀。
AbilitySlice生命周期
AbilitySlice作為Page的組成單元萝嘁,其生命周期是依托于其所屬Page生命周期的梆掸。AbilitySlice和Page具有相同的生命周期狀態(tài)和同名的回調(diào),當(dāng)Page生命周期發(fā)生變化時(shí)酿愧,它的AbilitySlice也會(huì)發(fā)生相同的生命周期變化沥潭。
當(dāng)頁(yè)面page中發(fā)生了AbilitySlice的導(dǎo)航切換時(shí),它的生命周期變化將獨(dú)立于頁(yè)面的生命周期變化
AbilitySlice生命周期回調(diào)與Page的相應(yīng)回調(diào)類似嬉挡。由于AbilitySlice承載具體的頁(yè)面钝鸽,開發(fā)者必須重寫AbilitySlice的onStart()回調(diào),并在此方法中通過(guò)setUIContent()方法設(shè)置頁(yè)面庞钢,如下所示:
@Override
protected void onStart(Intent intent) {
super.onStart(intent);
setUIContent(ResourceTable.Layout_main_layout);
}
舉個(gè)例子: 同一個(gè) Abil的兩個(gè)Slice之間的跳轉(zhuǎn) A->B 的生命周期
1 A->B(A頁(yè)面進(jìn)入到B頁(yè)面)
B中的生命周期:
2 B->A (B頁(yè)面返回到A頁(yè)面)
B的生命周期:
3 B頁(yè)面切換至后臺(tái)
4 B頁(yè)面從后臺(tái)切換至前臺(tái)