Stage模型啟動FA模型PageAbility
本小節介紹Stage模型的兩種應用組件如何啟動FA模型的PageAbility組件。
UIAbility啟動PageAbility
UIAbility啟動PageAbility和UIAbility啟動UIAbility的方式完全相同。
說明: 需注意FA模型中abilityName由bundleName + AbilityName組成,具體見示例。 開發前請熟悉鴻蒙開發指導文檔 :[
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的區別是當PageAbility銷毀的時候會返回執行結果。
UIAbility通過startAbilityForResult啟動PageABility和UIAbility通過startAbilityForResult啟動UIAbility的代碼一樣,沒有任何區別。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');
};
}
審核編輯 黃宇
-
框架
+關注
關注
0文章
403瀏覽量
17542 -
模型
+關注
關注
1文章
3305瀏覽量
49218 -
鴻蒙
+關注
關注
57文章
2392瀏覽量
43050
發布評論請先 登錄
相關推薦
評論