• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Starting a PageAbility from the Stage Model
2
3
4This topic describes how the two application components of the stage model start the PageAbility component of the FA model.
5
6
7## UIAbility Starting a PageAbility
8
9A UIAbility starts a PageAbility in the same way as it starts another UIAbility.
10
11> **NOTE**
12>
13> In the FA model, **abilityName** consists of **bundleName** and **AbilityName**. For details, see the code snippet below.
14
15```ts
16import UIAbility from '@ohos.app.ability.UIAbility';
17import AbilityConstant from '@ohos.app.ability.AbilityConstant';
18import Want from '@ohos.app.ability.Want';
19import window from '@ohos.window';
20import { BusinessError } from '@ohos.base';
21
22export default class EntryAbility extends UIAbility {
23    onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) {
24        console.info("EntryAbility onCreate")
25    }
26    onDestroy() {
27        console.info("EntryAbility onDestroy")
28    }
29    onWindowStageCreate(windowStage: window.WindowStage) {
30        console.info("EntryAbility onWindowStageCreate")
31        windowStage.loadContent('pages/Index', (err, data) => {
32            // ...
33        });
34        let want: Want = {
35            bundleName: "com.ohos.fa",
36            abilityName: "com.ohos.fa.EntryAbility",
37        };
38        this.context.startAbility(want).then(() => {
39            console.info('Start Ability successfully.');
40        }).catch((error: BusinessError) => {
41            console.error("Ability failed: " + JSON.stringify(error));
42        });
43    }
44    onWindowStageDestroy() {
45        console.info("EntryAbility onWindowStageDestroy")
46    }
47    onForeground() {
48        console.info("EntryAbility onForeground")
49    }
50    onBackground() {
51        console.info("EntryAbility onBackground")
52    }
53}
54```
55
56
57## UIAbility Accessing a PageAbility (startAbilityForResult)
58
59Different from **startAbility()**, **startAbilityForResult()** obtains the execution result when the PageAbility is destroyed.
60
61A UIAbility starts a PageAbility through **startAbilityForResult()** in the same way as it starts another UIAbility through **startAbilityForResult()**.
62
63
64```ts
65import UIAbility from '@ohos.app.ability.UIAbility';
66import AbilityConstant from '@ohos.app.ability.AbilityConstant';
67import Want from '@ohos.app.ability.Want';
68import window from '@ohos.window';
69import { BusinessError } from '@ohos.base';
70
71export default class EntryAbility extends UIAbility {
72    onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) {
73        console.info("EntryAbility onCreate")
74    }
75    onDestroy() {
76        console.info("EntryAbility onDestroy")
77    }
78    onWindowStageCreate(windowStage: window.WindowStage) {
79        console.info("EntryAbility onWindowStageCreate")
80        windowStage.loadContent('pages/Index', (err, data) => {
81            // ...
82        });
83        let want: Want = {
84            bundleName: "com.ohos.fa",
85            abilityName: "EntryAbility",
86        };
87        this.context.startAbilityForResult(want).then((result) => {
88            console.info('Ability verify result: ' + JSON.stringify(result));
89        }).catch((error: BusinessError) => {
90            console.error("Ability failed: " + JSON.stringify(error));
91        });
92    }
93    onWindowStageDestroy() {
94        console.info("EntryAbility onWindowStageDestroy")
95    }
96    onForeground() {
97        console.info("EntryAbility onForeground")
98    }
99    onBackground() {
100        console.info("EntryAbility onBackground")
101    }
102}
103```
104
105
106## ExtensionAbility Starting a PageAbility
107
108The following uses the ServiceExtensionAbility component as an example to describe how an ExtensionAbility starts a PageAbility. A ServiceExtensionAbility starts a PageAbility in the same way as it starts a UIAbility.
109
110
111```ts
112import Extension from '@ohos.app.ability.ServiceExtensionAbility'
113import Want from '@ohos.app.ability.Want';
114import { BusinessError } from '@ohos.base';
115
116export default class ServiceExtension extends Extension {
117    onCreate(want: Want) {
118        console.info("ServiceExtension onCreate")
119    }
120    onDestroy() {
121        console.info("ServiceExtension onDestroy")
122    }
123    onRequest(want: Want, startId: number) {
124        console.info("ServiceExtension onRequest")
125        let wantFA: Want = {
126            bundleName: "com.ohos.fa",
127            abilityName: "EntryAbility",
128        };
129        this.context.startAbility(wantFA).then(() => {
130            console.info('Start Ability successfully.');
131        }).catch((error: BusinessError) => {
132            console.error("Ability failed: " + JSON.stringify(error));
133        });
134    }
135}
136```
137