• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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