1# Stage模型启动FA模型PageAbility 2 3 4本小节介绍Stage模型的两种应用组件如何启动FA模型的PageAbility组件。 5 6 7## UIAbility启动PageAbility 8 9 UIAbility启动PageAbility和UIAbility启动UIAbility的方式完全相同。 10 11> **说明:** 12> 需注意FA模型中abilityName由bundleName + AbilityName组成,具体见示例。 13 14```ts 15import UIAbility from '@ohos.app.ability.UIAbility'; 16import AbilityConstant from '@ohos.app.ability.AbilityConstant'; 17import Want from '@ohos.app.ability.Want'; 18import window from '@ohos.window'; 19import { BusinessError } from '@ohos.base'; 20 21export default class EntryAbility extends UIAbility { 22 onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) { 23 console.info("EntryAbility onCreate") 24 } 25 onDestroy() { 26 console.info("EntryAbility onDestroy") 27 } 28 onWindowStageCreate(windowStage: window.WindowStage) { 29 console.info("EntryAbility onWindowStageCreate") 30 windowStage.loadContent('pages/Index', (err, data) => { 31 // ... 32 }); 33 let want: Want = { 34 bundleName: "com.ohos.fa", 35 abilityName: "com.ohos.fa.EntryAbility", 36 }; 37 this.context.startAbility(want).then(() => { 38 console.info('Start Ability successfully.'); 39 }).catch((error: BusinessError) => { 40 console.error("Ability failed: " + JSON.stringify(error)); 41 }); 42 } 43 onWindowStageDestroy() { 44 console.info("EntryAbility onWindowStageDestroy") 45 } 46 onForeground() { 47 console.info("EntryAbility onForeground") 48 } 49 onBackground() { 50 console.info("EntryAbility onBackground") 51 } 52} 53``` 54 55 56## UIAbility访问PageAbility(startAbilityForResult) 57 58startAbilityForResult和startAbility的区别是当PageAbility销毁的时候会返回执行结果。 59 60UIAbility通过startAbilityForResult启动PageABility和UIAbility通过startAbilityForResult启动UIAbility的代码一样,没有任何区别。 61 62 63```ts 64import UIAbility from '@ohos.app.ability.UIAbility'; 65import AbilityConstant from '@ohos.app.ability.AbilityConstant'; 66import Want from '@ohos.app.ability.Want'; 67import window from '@ohos.window'; 68import { BusinessError } from '@ohos.base'; 69 70export default class EntryAbility extends UIAbility { 71 onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) { 72 console.info("EntryAbility onCreate") 73 } 74 onDestroy() { 75 console.info("EntryAbility onDestroy") 76 } 77 onWindowStageCreate(windowStage: window.WindowStage) { 78 console.info("EntryAbility onWindowStageCreate") 79 windowStage.loadContent('pages/Index', (err, data) => { 80 // ... 81 }); 82 let want: Want = { 83 bundleName: "com.ohos.fa", 84 abilityName: "EntryAbility", 85 }; 86 this.context.startAbilityForResult(want).then((result) => { 87 console.info('Ability verify result: ' + JSON.stringify(result)); 88 }).catch((error: BusinessError) => { 89 console.error("Ability failed: " + JSON.stringify(error)); 90 }); 91 } 92 onWindowStageDestroy() { 93 console.info("EntryAbility onWindowStageDestroy") 94 } 95 onForeground() { 96 console.info("EntryAbility onForeground") 97 } 98 onBackground() { 99 console.info("EntryAbility onBackground") 100 } 101} 102``` 103 104 105## ExtensionAbility启动PageAbility 106 107下面以ServiceExtensionAbility为例来说明ExtensionAbility启动PageAbility。ServiceExtensionAbility启动PageAbility和ServiceExtensionAbility启动UIAbility的方式完全相同。 108 109 110```ts 111import Extension from '@ohos.app.ability.ServiceExtensionAbility' 112import Want from '@ohos.app.ability.Want'; 113import { BusinessError } from '@ohos.base'; 114 115export default class ServiceExtension extends Extension { 116 onCreate(want: Want) { 117 console.info("ServiceExtension onCreate") 118 } 119 onDestroy() { 120 console.info("ServiceExtension onDestroy") 121 } 122 onRequest(want: Want, startId: number) { 123 console.info("ServiceExtension onRequest") 124 let wantFA: Want = { 125 bundleName: "com.ohos.fa", 126 abilityName: "EntryAbility", 127 }; 128 this.context.startAbility(wantFA).then(() => { 129 console.info('Start Ability successfully.'); 130 }).catch((error: BusinessError) => { 131 console.error("Ability failed: " + JSON.stringify(error)); 132 }); 133 } 134} 135``` 136