PageAbility組件概述
PageAbility是包含UI界面、提供展示UI能力的應(yīng)用組件,主要用于與用戶交互。
開發(fā)者通過DevEco Studio開發(fā)平臺創(chuàng)建PageAbility時,DevEco Studio會自動創(chuàng)建相關(guān)模板代碼。PageAbility相關(guān)能力通過單獨(dú)的featureAbility實現(xiàn),生命周期相關(guān)回調(diào)則通過app.js/app.ets中各個回調(diào)函數(shù)實現(xiàn)。
PageAbility組件配置
PageAbility的相關(guān)配置在config.json配置文件的"module"對象的"abilities"對象中,"icon"屬性表示Ability圖標(biāo)資源文件的索引,"lable"屬性表示Ability對用戶顯示的名稱,"skills"屬性表示Ability能夠接收的want的特征。
表1 PageAbility部分配置項說明
屬性名稱 | 含義 | 數(shù)據(jù)類型 | 是否可缺省 |
---|---|---|---|
icon | 表示Ability圖標(biāo)資源文件的索引。取值示例:$media:ability_icon。如果在該Ability的skills屬性中,actions的取值包含 “action.system.home”,entities取值中包含"entity.system.home",則該Ability的icon將同時作為應(yīng)用的icon。如果存在多個符合條件的Ability,則取位置靠前的Ability的icon作為應(yīng)用的icon。說明:應(yīng)用的"icon"和"label"是用戶可感知配置項,需要區(qū)別于當(dāng)前所有已有的應(yīng)用"icon"或"label"(至少有一個不同)。 | 字符串 | 可缺省,缺省值為空。 |
label | 表示Ability對用戶顯示的名稱。取值可以是Ability名稱,也可以是對該名稱的資源索引,以支持多語言。如果在該Ability的skills屬性中,actions的取值包含 “action.system.home”,entities取值中包含"entity.system.home",則該Ability的label將同時作為應(yīng)用的label。如果存在多個符合條件的Ability,則取位置靠前的Ability的label作為應(yīng)用的label。說明: 應(yīng)用的"icon"和"label"是用戶可感知配置項,需要區(qū)別于當(dāng)前所有已有的應(yīng)用"icon"或"label"(至少有一個不同)。該標(biāo)簽為資源文件中定義的字符串的引用,或以"{}"包括的字符串。該標(biāo)簽最大長度為255字節(jié)。 | 字符串 | 可缺省,缺省值為空。 |
skills | 表示Ability能夠接收的want的特征。 | 對象數(shù)組 | 可缺省,缺省值為空。 |
PageAbility的生命周期
PageAbility生命周期是PageAbility被調(diào)度到INACTIVE、ACTIVE、BACKGROUND等各個狀態(tài)的統(tǒng)稱。PageAbility生命周期流轉(zhuǎn)及狀態(tài)說明見如下圖1、表1所示。
圖1 PageAbility生命周期流轉(zhuǎn)
表1 PageAbility生命周期狀態(tài)說明
生命周期狀態(tài) | 生命周期狀態(tài)說明 |
---|---|
UNINITIALIZED | 未初始狀態(tài),為臨時狀態(tài),PageAbility被創(chuàng)建后會由UNINITIALIZED狀態(tài)進(jìn)入INITIAL狀態(tài)。 |
INITIAL | 初始化狀態(tài),也表示停止?fàn)顟B(tài),表示當(dāng)前PageAbility未運(yùn)行,PageAbility被啟動后由INITIAL態(tài)進(jìn)入INACTIVE狀態(tài)。 |
INACTIVE | 失去焦點(diǎn)狀態(tài),表示當(dāng)前窗口已顯示但是無焦點(diǎn)狀態(tài)。 |
ACTIVE | 前臺激活狀態(tài),表示當(dāng)前窗口已顯示,并獲取焦點(diǎn)。 |
BACKGROUND | 后臺狀態(tài),表示當(dāng)前PageAbility退到后臺,PageAbility在被銷毀后由BACKGROUND狀態(tài)進(jìn)入INITIAL狀態(tài),或者重新被激活后由BACKGROUND狀態(tài)進(jìn)入ACTIVE狀態(tài)。 |
應(yīng)用開發(fā)者可以在app.js/app.ets中重寫生命周期相關(guān)回調(diào)函數(shù),PageAbility生命周期相關(guān)回調(diào)函數(shù)見下表。
表2 PageAbility生命周期回調(diào)接口說明
接口名 | 接口描述 |
---|---|
onCreate() | Ability第一次啟動創(chuàng)建Ability時調(diào)用onCreate方法,開發(fā)者可以在該方法里做一些應(yīng)用初始化工作。 |
onDestroy() | 應(yīng)用退出,銷毀Ability對象前調(diào)用onDestroy方法,開發(fā)者可以在該方法里做一些回收資源、清空緩存等應(yīng)用退出前的準(zhǔn)備工作。 |
onActive() | Ability切換到前臺,并且已經(jīng)獲取焦點(diǎn)時調(diào)用onActive方法。 |
onInactive() | Ability失去焦點(diǎn)時調(diào)用onInactive方法,Ability在進(jìn)入后臺狀態(tài)時會先失去焦點(diǎn),再進(jìn)入后臺。 |
onShow() | Ability由后臺不可見狀態(tài)切換到前臺可見狀態(tài)調(diào)用onShow方法,此時用戶在屏幕可以看到該Ability。 |
onHide() | Ability由前臺切換到后臺不可見狀態(tài)時調(diào)用onHide方法,此時用戶在屏幕看不到該Ability。 |
PageAbility生命周期回調(diào)與生命周期狀態(tài)的關(guān)系如下圖所示。
圖2 PageAbility生命周期回調(diào)與生命周期狀態(tài)的關(guān)系
說明
1、PageAbility的生命周期回調(diào)均為同步接口。
2、目前app.js環(huán)境中僅支持onCreate和onDestroy回調(diào),app.ets環(huán)境支持全量生命周期回調(diào)。
PageAbility的啟動模式
啟動模式對應(yīng)PageAbility被啟動時的行為,支持單實例模式、標(biāo)準(zhǔn)模式兩種啟動模式。
表1 PageAbility的啟動模式
啟動模式 | 描述 | 說明 |
---|---|---|
singleton | 單實例模式 | 每次調(diào)用startAbility方法時,如果應(yīng)用進(jìn)程中該類型的Ability實例已經(jīng)存在,則復(fù)用已有的實例,系統(tǒng)中只存在唯一一個實例。表現(xiàn)為在最近任務(wù)列表中只有一個Ability實例。典型場景:當(dāng)用戶打開視頻播放應(yīng)用并觀看視頻,回到桌面后,再次打開視頻播放應(yīng)用,應(yīng)用仍為回到桌面之前正在觀看的視頻。 |
standard | 標(biāo)準(zhǔn)模式 | 缺省啟動模式。每次調(diào)用startAbility方法時,都會在應(yīng)用進(jìn)程中創(chuàng)建一個新的Ability實例。表現(xiàn)為在最近任務(wù)列表中可以看到有多個該類型的Ability實例。典型場景:當(dāng)用戶打開文檔應(yīng)用,選擇新建文檔的時候,每次點(diǎn)擊新建文檔,都會創(chuàng)建一個新的文檔任務(wù),在最近任務(wù)列表中可以看到多個新建的文檔任務(wù)。 |
應(yīng)用開發(fā)者可在config.json配置文件中通過“l(fā)aunchType”配置啟動模式。示例如下:
{
"module": {
// ...
"abilities": [
{
// singleton: 單實例模式
// standard: 標(biāo)準(zhǔn)模式
"launchType": "standard",
// ...
}
]
}
}
啟動PageAbility時,對于標(biāo)準(zhǔn)啟動模式(多實例啟動模式)以及單實例啟動模式首次啟動,PageAbility生命周期回調(diào)均會被觸發(fā)。單實例非首次啟動時不會再觸發(fā)onCreate()接口,而是觸發(fā)onNewWant(),onNewWant()的說明如下表2所示。文章來源:http://www.zghlxwxcb.cn/news/detail-804085.html
表2 單實例啟動模式特有的回調(diào)函數(shù)說明文章來源地址http://www.zghlxwxcb.cn/news/detail-804085.html
接口名 | 接口描述 |
---|---|
onNewWant(want: Want) | 單實例啟動模式,PageAbility非首次啟動時調(diào)用onNewWant方法,開發(fā)者可以在該方法中獲取want,進(jìn)而根據(jù)want做進(jìn)一步處理。例如,單實例PageAbility遷移場景,指定頁面拉起PageAbility場景。 |
到了這里,關(guān)于HarmonyOS4.0系統(tǒng)性深入開發(fā)21PageAbility組件概述的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!