Stage模型啟動FA模型PageAbility
本小節(jié)介紹Stage模型的兩種應(yīng)用組件如何啟動FA模型的PageAbility組件。
UIAbility啟動PageAbility
UIAbility啟動PageAbility和UIAbility啟動UIAbility的方式完全相同。
說明: 需注意FA模型中abilityName由bundleName + AbilityName組成,具體見示例。 開發(fā)前請熟悉鴻蒙開發(fā)指導(dǎo)文檔 :[
gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md
]
import { common, Want } from '@kit.AbilityKit';
import { hilog } from '@kit.PerformanceAnalysisKit';
import { BusinessError } from '@kit.BasicServicesKit';
const TAG: string = '[Page_StartFAModel]';
const DOMAIN_NUMBER: number = 0xFF00;
@Entry
@Component
struct Page_StartFAModel {
private context = getContext(this) as common.UIAbilityContext;
build() {
Column() {
//...
List({ initialIndex: 0 }) {
ListItem() {
Row() {
//...
}
.onClick(() = > {
let want: Want = {
bundleName: 'com.samples.famodelabilitydevelop',
abilityName: 'com.samples.famodelabilitydevelop.MainAbility'
};
this.context.startAbility(want).then(() = > {
hilog.info(DOMAIN_NUMBER, TAG, 'Start Ability successfully.');
}).catch((error: BusinessError) = > {
hilog.error(DOMAIN_NUMBER, TAG, `Ability failed: ` + JSON.stringify(error));
});
})
}
//...
}
//...
}
//...
}
}
UIAbility訪問PageAbility(startAbilityForResult)
startAbilityForResult和startAbility的區(qū)別是當PageAbility銷毀的時候會返回執(zhí)行結(jié)果。
UIAbility通過startAbilityForResult啟動PageABility和UIAbility通過startAbilityForResult啟動UIAbility的代碼一樣,沒有任何區(qū)別。HarmonyOS與OpenHarmony鴻蒙文檔籽料:mau123789是v直接拿
import { common, Want } from '@kit.AbilityKit';
import { hilog } from '@kit.PerformanceAnalysisKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { promptAction } from '@kit.ArkUI';
const TAG: string = '[Page_StartFAModel]';
const DOMAIN_NUMBER: number = 0xFF00;
@Entry
@Component
struct Page_StartFAModel {
private context = getContext(this) as common.UIAbilityContext;
build() {
Column() {
//...
List({ initialIndex: 0 }) {
ListItem() {
Row() {
//...
}
.onClick(() = > {
let want: Want = {
bundleName: 'com.samples.famodelabilitydevelop',
abilityName: 'com.samples.famodelabilitydevelop.MainAbility',
};
this.context.startAbilityForResult(want).then((result) = > {
hilog.info(DOMAIN_NUMBER, TAG, 'Ability verify result: ' + JSON.stringify(result));
if (result !== null) {
promptAction.showToast({
message: JSON.stringify(result)
});
}
}).catch((error: BusinessError) = > {
hilog.error(DOMAIN_NUMBER, TAG, `Ability failed: ` + JSON.stringify(error));
});
})
}
//...
}
//...
}
//...
}
}
ExtensionAbility啟動PageAbility
下面以ServiceExtensionAbility為例來說明ExtensionAbility啟動PageAbility。ServiceExtensionAbility啟動PageAbility和ServiceExtensionAbility啟動UIAbility的方式完全相同。
import { Want, ServiceExtensionAbility } from '@kit.AbilityKit';
import { hilog } from '@kit.PerformanceAnalysisKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { rpc } from '@kit.IPCKit';
import ServiceExtImpl from '../IdlServiceExt/idl_service_ext_impl';
const TAG: string = '[ServiceExtAbility]';
const DOMAIN_NUMBER: number = 0xFF00;
export default class ServiceExtAbility extends ServiceExtensionAbility {
serviceExtImpl: ServiceExtImpl = new ServiceExtImpl('ExtImpl');
onCreate(want: Want): void {
let serviceExtensionContext = this.context;
hilog.info(DOMAIN_NUMBER, TAG, `onCreate, want: ${want.abilityName}`);
};
onRequest(want: Want, startId: number): void {
hilog.info(DOMAIN_NUMBER, TAG, `onRequest, want: ${want.abilityName}`);
if (want.parameters?.key === 'ConnectFaPageAbility') {
let wantFA: Want = {
bundleName: 'com.samples.famodelabilitydevelop',
abilityName: 'com.samples.famodelabilitydevelop.MainAbility',
};
this.context.startAbility(wantFA).then(() = > {
hilog.info(DOMAIN_NUMBER, TAG, 'Start Ability successfully.');
}).catch((error: BusinessError) = > {
hilog.info(DOMAIN_NUMBER, TAG, `Ability failed: ${JSON.stringify(error)}`);
});
}
};
onConnect(want: Want): rpc.RemoteObject {
hilog.info(DOMAIN_NUMBER, TAG, `onConnect, want: ${want.abilityName}`);
// 返回ServiceExtImpl對象,客戶端獲取后便可以與ServiceExtensionAbility進行通信
return this.serviceExtImpl as rpc.RemoteObject;
};
onDisconnect(want: Want): void {
hilog.info(DOMAIN_NUMBER, TAG, `onDisconnect, want: ${want.abilityName}`);
};
onDestroy(): void {
hilog.info(DOMAIN_NUMBER, TAG, 'onDestroy');
};
}
審核編輯 黃宇
-
框架
+關(guān)注
關(guān)注
0文章
404瀏覽量
17890 -
模型
+關(guān)注
關(guān)注
1文章
3518瀏覽量
50405 -
鴻蒙
+關(guān)注
關(guān)注
60文章
2617瀏覽量
44036
發(fā)布評論請先 登錄
KaihongOS操作系統(tǒng)FA模型與Stage模型介紹
FA模型綁定Stage模型ServiceExtensionAbility介紹
如何將一個FA模型開發(fā)的聲明式范式應(yīng)用切換到Stage模型
從FA模型切換到Stage模型時:module的切換說明
鴻蒙開發(fā)Ability Kit程序框架服務(wù):FA模型綁定Stage模型ServiceExtensionAbility

鴻蒙開發(fā)Ability Kit程序框架服務(wù):FA模型訪問Stage模型DataShareExtensionAbility

鴻蒙開發(fā)Ability Kit程序框架服務(wù):Stage模型綁定FA模型ServiceAbility

鴻蒙開發(fā)Ability Kit程序框架服務(wù):FA模型切換Stage模型指導(dǎo) module的切換

鴻蒙開發(fā)Ability Kit程序框架服務(wù):PageAbility切換 組件切換

評論