PageAbility切換
FA模型中PageAbility對(duì)應(yīng)Stage模型中的UIAbility,PageAbility切換為UIAbility的方法如下。
- 在Stage應(yīng)用中[創(chuàng)建UIAbility]。
- 將FA應(yīng)用中PageAbility的代碼遷移到新創(chuàng)建的UIAbility中。 FA應(yīng)用中PageAbility和Stage應(yīng)用中的UIAbility生命周期基本一致,兩者的生命周期詳細(xì)對(duì)比見(jiàn)下表。
- 開(kāi)發(fā)前請(qǐng)熟悉鴻蒙開(kāi)發(fā)指導(dǎo)文檔 :[
gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md
]FA的PageAbility Stage的UIAbility 對(duì)應(yīng)關(guān)系描述 onCreate(): void onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void 兩者的意義和調(diào)用時(shí)機(jī)一致,Stage模型在回調(diào)中新增了參數(shù),方便開(kāi)發(fā)者在創(chuàng)建的時(shí)候獲取啟動(dòng)相關(guān)的數(shù)據(jù)。 NA onWindowStageCreate(windowStage: window.WindowStage): void Stage模型新增,窗口創(chuàng)建時(shí)由系統(tǒng)回調(diào)。 onActive(): void on(eventType: 'windowStageEvent', callback: Callback): void; WindowStageEventType.ACTIVE 兩者的意義和調(diào)用時(shí)機(jī)一致。Stage模型下移動(dòng)到了窗口對(duì)象中。 onShow(): void onForeground(): void 兩者的意義和調(diào)用時(shí)機(jī)一致,參數(shù)也一致。 onNewWant(want: Want): void onNewWant(want: Want, launchParam: AbilityConstant.LaunchParam): void 兩者的意義和調(diào)用時(shí)機(jī)一致,Stage模型多了LaunchParam參數(shù)來(lái)告知應(yīng)用啟動(dòng)原因。 onInactive(): void on(eventType: 'windowStageEvent', callback: Callback): void; WindowStageEventType.INACTIVE 兩者的意義和調(diào)用時(shí)機(jī)一致。Stage模型下移動(dòng)到了窗口對(duì)象中。 onHide(): void onBackground(): void 兩者的意義和調(diào)用時(shí)機(jī)一致,參數(shù)也一致。 NA onWindowStageDestroy(): void Stage模型新增,窗口銷(xiāo)毀時(shí)由系統(tǒng)回調(diào)。 onDestroy(): void onDestroy(): void 兩者的意義和調(diào)用時(shí)機(jī)一致,參數(shù)也一致。
- 對(duì)遷移過(guò)來(lái)的代碼進(jìn)行調(diào)整,主要有以下兩部分。 1、指定加載頁(yè)面的方式不同。
- 在FA模型中,通過(guò)在config.json中設(shè)置頁(yè)面信息來(lái)配置需要加載的頁(yè)面。
- 在Stage模型中,則是通過(guò)在onWindowStageCreate回調(diào)中調(diào)用windowStage.loadContent實(shí)現(xiàn)對(duì)頁(yè)面的加載。
HarmonyOS與OpenHarmony鴻蒙文檔籽料:mau123789是v直接拿
例如,開(kāi)發(fā)者希望Ability啟動(dòng)后加載"pages/Index"頁(yè)面,在FA模型中,開(kāi)發(fā)者需要在config.json中加入如下代碼:
"pages" : [
"pages/Index"
]
在Stage模型中,則在MainAbility中實(shí)現(xiàn)如下接口:
import { UIAbility } from '@kit.AbilityKit';
import { hilog } from '@kit.PerformanceAnalysisKit';
import { window } from '@kit.ArkUI';
export default class TestAbility extends UIAbility {
// ...
onWindowStageCreate(windowStage: window.WindowStage) {
hilog.info(0x0000, 'testTag', '%{public}s', 'TestAbility onWindowStageCreate');
windowStage.loadContent('testability/pages/Index', (err, data) = > {
if (err.code) {
hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? '');
return;
}
hilog.info(0x0000, 'testTag', 'Succeeded in loading the content. Data: %{public}s',
JSON.stringify(data) ?? '');
});
}
// ...
}
2、在resources/base/profile/main_pages.json中配置頁(yè)面,以"pages/Index"為例:
{
"src": [
"pages/Index"
]
}
審核編輯 黃宇
-
框架
+關(guān)注
關(guān)注
0文章
403瀏覽量
17505 -
組件
+關(guān)注
關(guān)注
1文章
512瀏覽量
17845 -
鴻蒙
+關(guān)注
關(guān)注
57文章
2362瀏覽量
42884
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論