一、UIAbility組件概述
1.概述
UIAbility組件是一種包含UI界面的應(yīng)用組件,主要用于和用戶交互。
UIAbility組件是系統(tǒng)調(diào)度的基本單元,為應(yīng)用提供繪制界面的窗口;一個(gè)UIAbility組件中可以通過多個(gè)頁面來實(shí)現(xiàn)一個(gè)功能模塊。每一個(gè)UIAbility組件實(shí)例,都對(duì)應(yīng)于一個(gè)最近任務(wù)列表中的任務(wù)。
2.聲明配置
為使應(yīng)用能夠正常使用UIAbility,需要在module.json5配置文件的abilities標(biāo)簽中聲明UIAbility的名稱、入口、標(biāo)簽等相關(guān)信息。
{
"module": {
// ...
"abilities": [
{
"name": "EntryAbility", // UIAbility組件的名稱
"srcEntrance": "./ets/entryability/EntryAbility.ts", // UIAbility組件的代碼路徑
"description": "$string:EntryAbility_desc", // UIAbility組件的描述信息
"icon": "$media:icon", // UIAbility組件的圖標(biāo)
"label": "$string:EntryAbility_label", // UIAbility組件的標(biāo)簽
"startWindowIcon": "$media:icon", // UIAbility組件啟動(dòng)頁面圖標(biāo)資源文件的索引
"startWindowBackground": "$color:start_window_background", // UIAbility組件啟動(dòng)頁面背景顏色資源文件的索引
// ...
}
]
}
}
二、UIAbility組件生命周期
1.概述
當(dāng)用戶打開、切換和返回到對(duì)應(yīng)應(yīng)用時(shí),應(yīng)用中的UIAbility實(shí)例會(huì)在其生命周期的不同狀態(tài)之間轉(zhuǎn)換。UIAbility類提供了一系列回調(diào),通過這些回調(diào)可以知道當(dāng)前UIAbility實(shí)例的某個(gè)狀態(tài)發(fā)生改變,會(huì)經(jīng)過UIAbility實(shí)例的創(chuàng)建和銷毀,或者UIAbility實(shí)例發(fā)生了前后臺(tái)的狀態(tài)切換。
UIAbility的生命周期包括Create、Foreground、Background、Destroy四個(gè)狀態(tài),如下圖所示。
圖1?UIAbility生命周期狀態(tài)
2.生命周期狀態(tài)說明
Create狀態(tài)
Create狀態(tài)為在應(yīng)用加載過程中,UIAbility實(shí)例創(chuàng)建完成時(shí)觸發(fā),系統(tǒng)會(huì)調(diào)用onCreate()回調(diào)。可以在該回調(diào)中進(jìn)行應(yīng)用初始化操作,例如變量定義資源加載等,用于后續(xù)的UI界面展示。
import UIAbility from '@ohos.app.ability.UIAbility';
import Window from '@ohos.window';
export default class EntryAbility extends UIAbility {
onCreate(want, launchParam) {
// 應(yīng)用初始化
}
// ...
}
WindowStageCreate和WindowStageDestory狀態(tài)
UIAbility實(shí)例創(chuàng)建完成之后,在進(jìn)入Foreground之前,系統(tǒng)會(huì)創(chuàng)建一個(gè)WindowStage。WindowStage創(chuàng)建完成后會(huì)進(jìn)入onWindowStageCreate()回調(diào),可以在該回調(diào)中設(shè)置UI界面加載、設(shè)置WindowStage的事件訂閱。
圖2?WindowStageCreate和WindowStageDestory狀態(tài)
在onWindowStageCreate()回調(diào)中通過loadContent()方法設(shè)置應(yīng)用要加載的頁面并根據(jù)需要訂閱WindowStage的事件(獲焦/失焦、可見/不可見)。
import UIAbility from '@ohos.app.ability.UIAbility';
import Window from '@ohos.window';
export default class EntryAbility extends UIAbility {
onWindowStageCreate(windowStage: Window.WindowStage) {
// 設(shè)置WindowStage的事件訂閱(獲焦/失焦、可見/不可見)
// 設(shè)置UI界面加載
windowStage.loadContent('pages/Index', (err, data) => {
// ...
});
}
}
說明
WindowStage的相關(guān)使用請(qǐng)參見窗口開發(fā)指導(dǎo)。
對(duì)應(yīng)于onWindowStageCreate()回調(diào)。在UIAbility實(shí)例銷毀之前,則會(huì)先進(jìn)入onWindowStageDestroy()回調(diào),可以在該回調(diào)中釋放UI界面資源。例如在onWindowStageDestroy()中注銷獲焦/失焦等WindowStage事件。
import UIAbility from '@ohos.app.ability.UIAbility';
import Window from '@ohos.window';
export default class EntryAbility extends UIAbility {
// ...
onWindowStageDestroy() {
// 釋放UI界面資源
}
}
Foreground和Background狀態(tài)
Foreground和Background狀態(tài)分別在UIAbility實(shí)例切換至前臺(tái)和切換至后臺(tái)時(shí)觸發(fā),對(duì)應(yīng)于onForeground()回調(diào)和onBackground()回調(diào)。
onForeground()回調(diào),在UIAbility的UI界面可見之前,如UIAbility切換至前臺(tái)時(shí)觸發(fā)??梢栽趏nForeground()回調(diào)中申請(qǐng)系統(tǒng)需要的資源,或者重新申請(qǐng)?jiān)趏nBackground()中釋放的資源。
onBackground()回調(diào),在UIAbility的UI界面完全不可見之后,如UIAbility切換至后臺(tái)時(shí)候觸發(fā)??梢栽趏nBackground()回調(diào)中釋放UI界面不可見時(shí)無用的資源,或者在此回調(diào)中執(zhí)行較為耗時(shí)的操作,例如狀態(tài)保存等。
例如應(yīng)用在使用過程中需要使用用戶定位時(shí),假設(shè)應(yīng)用已獲得用戶的定位權(quán)限授權(quán)。在UI界面顯示之前,可以在onForeground()回調(diào)中開啟定位功能,從而獲取到當(dāng)前的位置信息。
當(dāng)應(yīng)用切換到后臺(tái)狀態(tài),可以在onBackground()回調(diào)中停止定位功能,以節(jié)省系統(tǒng)的資源消耗。文章來源:http://www.zghlxwxcb.cn/news/detail-514656.html
import UIAbility from '@ohos.app.ability.UIAbility';
export default class EntryAbility extends UIAbility {
onForeground() {
// 申請(qǐng)系統(tǒng)需要的資源,或者重新申請(qǐng)?jiān)趏nBackground中釋放的資源
}
onBackground() {
// 釋放UI界面不可見時(shí)無用的資源,或者在此回調(diào)中執(zhí)行較為耗時(shí)的操作
// 例如狀態(tài)保存等
}
}
Destroy狀態(tài)
Destroy狀態(tài)在UIAbility實(shí)例銷毀時(shí)觸發(fā)??梢栽趏nDestroy()回調(diào)中進(jìn)行系統(tǒng)資源的釋放、數(shù)據(jù)的保存等操作。
例如調(diào)用terminateSelf()方法停止當(dāng)前UIAbility實(shí)例,從而完成UIAbility實(shí)例的銷毀;或者用戶使用最近任務(wù)列表關(guān)閉該UIAbility實(shí)例,完成UIAbility的銷毀。文章來源地址http://www.zghlxwxcb.cn/news/detail-514656.html
import UIAbility from '@ohos.app.ability.UIAbility';
import Window from '@ohos.window';
export default class EntryAbility extends UIAbility {
onDestroy() {
// 系統(tǒng)資源的釋放、數(shù)據(jù)的保存等
}
}
到了這里,關(guān)于HarmonyOS/OpenHarmony應(yīng)用開發(fā)-Stage模型UIAbility組件使用(一)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!