1# ApplicationContext 2 3ApplicationContext模块提供开发者应用级别的的上下文的能力,包括提供注册及取消注册应用内组件生命周期的监听接口。 4 5> **说明:** 6> 7> 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 8> 本模块接口仅可在Stage模型下使用。 9 10## 导入模块 11 12```ts 13import common from '@ohos.app.ability.common'; 14``` 15 16## 使用说明 17 18在使用ApplicationContext的功能前,需要通过context的实例获取。 19 20```ts 21import common from '@ohos.app.ability.common'; 22 23let applicationContext: common.ApplicationContext = this.context.getApplicationContext(); 24``` 25 26## ApplicationContext.on(type: 'abilityLifecycle', callback: AbilityLifecycleCallback) 27 28on(type: 'abilityLifecycle', callback: AbilityLifecycleCallback): **number**; 29 30注册监听应用内生命周期 31 32**系统能力**:SystemCapability.Ability.AbilityRuntime.Core 33 34**参数:** 35 36| 参数名 | 类型 | 必填 | 说明 | 37| ------------------------ | -------- | ---- | ------------------------------ | 38| type | 'abilityLifecycle' | 是 | 监听事件的类型。 | 39| callback | [AbilityLifecycleCallback](js-apis-app-ability-abilityLifecycleCallback.md) | 是 | 回调方法,返回注册监听事件的ID。 | 40 41**返回值:** 42 43| 类型 | 说明 | 44| ------ | ------------------------------ | 45| number | 返回的此次注册监听生命周期的ID(每次注册该ID会自增+1,当超过监听上限数量2^63-1时,返回-1)。| 46 47**示例:** 48 49```ts 50import UIAbility from '@ohos.app.ability.UIAbility'; 51import AbilityLifecycleCallback from '@ohos.app.ability.AbilityLifecycleCallback'; 52 53let lifecycleId: number; 54 55export default class EntryAbility extends UIAbility { 56 onCreate() { 57 console.log('MyAbility onCreate'); 58 let AbilityLifecycleCallback: AbilityLifecycleCallback = { 59 onAbilityCreate(ability) { 60 console.log('AbilityLifecycleCallback onAbilityCreate ability: ${ability}'); 61 }, 62 onWindowStageCreate(ability, windowStage) { 63 console.log('AbilityLifecycleCallback onWindowStageCreate ability: ${ability}'); 64 console.log('AbilityLifecycleCallback onWindowStageCreate windowStage: ${windowStage}'); 65 }, 66 onWindowStageActive(ability, windowStage) { 67 console.log('AbilityLifecycleCallback onWindowStageActive ability: ${ability}'); 68 console.log('AbilityLifecycleCallback onWindowStageActive windowStage: ${windowStage}'); 69 }, 70 onWindowStageInactive(ability, windowStage) { 71 console.log('AbilityLifecycleCallback onWindowStageInactive ability: ${ability}'); 72 console.log('AbilityLifecycleCallback onWindowStageInactive windowStage: ${windowStage}'); 73 }, 74 onWindowStageDestroy(ability, windowStage) { 75 console.log('AbilityLifecycleCallback onWindowStageDestroy ability: ${ability}'); 76 console.log('AbilityLifecycleCallback onWindowStageDestroy windowStage: ${windowStage}'); 77 }, 78 onAbilityDestroy(ability) { 79 console.log('AbilityLifecycleCallback onAbilityDestroy ability: ${ability}'); 80 }, 81 onAbilityForeground(ability) { 82 console.log('AbilityLifecycleCallback onAbilityForeground ability: ${ability}'); 83 }, 84 onAbilityBackground(ability) { 85 console.log('AbilityLifecycleCallback onAbilityBackground ability: ${ability}'); 86 }, 87 onAbilityContinue(ability) { 88 console.log('AbilityLifecycleCallback onAbilityContinue ability: ${ability}'); 89 } 90 } 91 // 1.通过context属性获取applicationContext 92 let applicationContext = this.context.getApplicationContext(); 93 // 2.通过applicationContext注册监听应用内生命周期 94 lifecycleId = applicationContext.on('abilityLifecycle', AbilityLifecycleCallback); 95 console.log('registerAbilityLifecycleCallback lifecycleId: ${lifecycleId)}'); 96 } 97} 98``` 99 100## ApplicationContext.off(type: 'abilityLifecycle', callbackId: number, callback: AsyncCallback\<void>) 101 102off(type: 'abilityLifecycle', callbackId: **number**, callback: AsyncCallback<**void**>): **void**; 103 104取消监听应用内生命周期 105 106**系统能力**:SystemCapability.Ability.AbilityRuntime.Core 107 108**参数:** 109 110| 参数名 | 类型 | 必填 | 说明 | 111| ------------- | -------- | ---- | -------------------------- | 112| type | 'abilityLifecycle' | 是 | 取消监听事件的类型。 | 113| callbackId | number | 是 | 注册监听应用内生命周期的ID。 | 114| callback | AsyncCallback\<void> | 是 | 回调方法。 | 115 116**示例:** 117 118```ts 119import UIAbility from '@ohos.app.ability.UIAbility'; 120 121let lifecycleId: number; 122 123export default class EntryAbility extends UIAbility { 124 onDestroy() { 125 let applicationContext = this.context.getApplicationContext(); 126 console.log('stage applicationContext: ${applicationContext}'); 127 applicationContext.off('abilityLifecycle', lifecycleId, (error, data) => { 128 if (error) { 129 console.error('unregisterAbilityLifecycleCallback fail, err: ${JSON.stringify(error)}'); 130 } else { 131 console.log('unregisterAbilityLifecycleCallback success, data: ${JSON.stringify(data)}'); 132 } 133 }); 134 } 135} 136``` 137 138## ApplicationContext.off(type: 'abilityLifecycle', callbackId: number) 139 140off(type: 'abilityLifecycle', callbackId: number): Promise\<void>; 141 142取消监听应用内生命周期 143 144**系统能力**:SystemCapability.Ability.AbilityRuntime.Core 145 146**参数:** 147 148| 参数名 | 类型 | 必填 | 说明 | 149| ------------- | -------- | ---- | -------------------------- | 150| type | 'abilityLifecycle' | 是 | 取消监听事件的类型。 | 151| callbackId | number | 是 | 注册监听应用内生命周期的ID。 | 152 153**示例:** 154 155```ts 156import Ability from '@ohos.app.ability.UIAbility'; 157 158let lifecycleId: number; 159 160export default class MyAbility extends Ability { 161 onDestroy() { 162 let applicationContext = this.context.getApplicationContext(); 163 console.log('stage applicationContext: ${applicationContext}'); 164 applicationContext.off('abilityLifecycle', lifecycleId); 165 } 166} 167``` 168 169## ApplicationContext.on(type: 'environment', callback: EnvironmentCallback) 170 171on(type: 'environment', callback: EnvironmentCallback): **number**; 172 173注册对系统环境变化的监听。使用callback异步回调。 174 175**系统能力**:SystemCapability.Ability.AbilityRuntime.Core 176 177**参数:** 178 179| 参数名 | 类型 | 必填 | 说明 | 180| ------------------------ | -------- | ---- | ------------------------------ | 181| type | 'environment' | 是 | 监听事件的类型。 | 182| callback | [EnvironmentCallback](js-apis-app-ability-environmentCallback.md) | 是 | 回调方法,返回注册监听事件的ID。 | 183 184**返回值:** 185 186| 类型 | 说明 | 187| ------ | ------------------------------ | 188| number | 返回的此次注册监听系统环境变化的ID(每次注册该ID会自增+1,当超过监听上限数量2^63-1时,返回-1)。| 189 190**示例:** 191 192```ts 193import UIAbility from '@ohos.app.ability.UIAbility'; 194import EnvironmentCallback from '@ohos.app.ability.EnvironmentCallback'; 195 196let callbackId: number; 197 198export default class EntryAbility extends UIAbility { 199 onCreate() { 200 console.log('MyAbility onCreate') 201 let environmentCallback: EnvironmentCallback = { 202 onConfigurationUpdated(config){ 203 console.log(`onConfigurationUpdated config: ${JSON.stringify(config)}`); 204 }, 205 onMemoryLevel(level){ 206 console.log('onMemoryLevel level: ${level}'); 207 } 208 }; 209 // 1.获取applicationContext 210 let applicationContext = this.context.getApplicationContext(); 211 // 2.通过applicationContext注册监听系统环境变化 212 callbackId = applicationContext.on('environment', environmentCallback); 213 console.log(`registerEnvironmentCallback callbackId: ${callbackId}`); 214 } 215} 216``` 217 218## ApplicationContext.off(type: 'environment', callbackId: number, callback: AsyncCallback\<void>) 219 220off(type: 'environment', callbackId: **number**, callback: AsyncCallback<**void**>): **void**; 221 222取消对系统环境变化的监听。使用callback异步回调。 223 224**系统能力**:SystemCapability.Ability.AbilityRuntime.Core 225 226**参数:** 227 228| 参数名 | 类型 | 必填 | 说明 | 229| ------------- | -------- | ---- | -------------------------- | 230| type | 'environment' | 是 | 取消监听事件的类型。 | 231| callbackId | number | 是 | 注册监听系统环境变化的ID。 | 232| callback | AsyncCallback\<void> | 是 | 回调方法。 | 233 234**示例:** 235 236```ts 237import UIAbility from '@ohos.app.ability.UIAbility'; 238 239let callbackId: number; 240 241export default class EntryAbility extends UIAbility { 242 onDestroy() { 243 let applicationContext = this.context.getApplicationContext(); 244 applicationContext.off('environment', callbackId, (error, data) => { 245 if (error) { 246 console.error('unregisterEnvironmentCallback fail, err: ${JSON.stringify(error)}'); 247 } else { 248 console.log('unregisterEnvironmentCallback success, data: ${JSON.stringify(data)}'); 249 } 250 }); 251 } 252} 253``` 254 255## ApplicationContext.off(type: 'environment', callbackId: number) 256 257off(type: 'environment', callbackId: **number**, callback: AsyncCallback<**void**>): **void**; 258 259取消对系统环境变化的监听。使用callback异步回调。 260 261**系统能力**:SystemCapability.Ability.AbilityRuntime.Core 262 263**参数:** 264 265| 参数名 | 类型 | 必填 | 说明 | 266| ------------- | -------- | ---- | -------------------------- | 267| type | 'environment' | 是 | 取消监听事件的类型。 | 268| callbackId | number | 是 | 注册监听系统环境变化的ID。 | 269 270**示例:** 271 272```ts 273import Ability from '@ohos.app.ability.UIAbility'; 274 275let callbackId: number; 276 277export default class MyAbility extends Ability { 278 onDestroy() { 279 let applicationContext = this.context.getApplicationContext(); 280 applicationContext.off('environment', callbackId); 281 } 282} 283``` 284 285## ApplicationContext.on(type: 'applicationStateChange', callback: ApplicationStateChangeCallback)<sup>10+</sup> 286 287on(type: 'applicationStateChange', callback: ApplicationStateChangeCallback): **void**; 288 289注册对当前应用前后台变化的监听。使用callback异步回调。 290 291**系统能力**:SystemCapability.Ability.AbilityRuntime.Core 292 293**参数:** 294 295| 参数名 | 类型 | 必填 | 说明 | 296| -------- | ------------------------------------------------------------ | ---- | ---------------- | 297| type | string | 是 | 监听事件类型,必须为'applicationStateChange'。 | 298| callback | [ApplicationStateChangeCallback](js-apis-app-ability-applicationStateChangeCallback.md) | 是 | 对于该事件监听的回调方法,可以对应用从后台切换到前台,以及前台切换到后台分别定义回调。 | 299 300**示例:** 301 302```ts 303import UIAbility from '@ohos.app.ability.UIAbility'; 304import ApplicationStateChangeCallback from '@ohos.app.ability.ApplicationStateChangeCallback'; 305 306export default class MyAbility extends UIAbility { 307 onCreate() { 308 console.log('MyAbility onCreate'); 309 let applicationStateChangeCallback: ApplicationStateChangeCallback = { 310 onApplicationForeground() { 311 console.info('applicationStateChangeCallback onApplicationForeground'); 312 }, 313 onApplicationBackground() { 314 console.info('applicationStateChangeCallback onApplicationBackground'); 315 } 316 } 317 318 // 1.获取applicationContext 319 let applicationContext = this.context.getApplicationContext(); 320 // 2.通过applicationContext注册应用前后台状态监听 321 applicationContext.on('applicationStateChange', applicationStateChangeCallback); 322 console.log('Resgiter applicationStateChangeCallback'); 323 } 324} 325``` 326 327## ApplicationContext.off(type: 'applicationStateChange')<sup>10+</sup> 328 329off(type: 'applicationStateChange', callback?: ApplicationStateChangeCallback): **void**; 330 331取消当前应用注册的前后台变化的全部监听。 332 333**系统能力**:SystemCapability.Ability.AbilityRuntime.Core 334 335**参数:** 336 337| 参数名 | 类型 | 必填 | 说明 | 338| ------ | ------------- | ---- | -------------------- | 339| type | string | 是 | 取消监听事件的类型,必须为'applicationStateChange'。 | 340| callback | [ApplicationStateChangeCallback](js-apis-app-ability-applicationStateChangeCallback.md) | 否 | 对于该事件监听的回调方法,可以对应用从后台切换到前台,以及前台切换到后台分别定义回调。 | 341 342**示例:** 343 344```ts 345import UIAbility from '@ohos.app.ability.UIAbility'; 346 347export default class MyAbility extends UIAbility { 348 onDestroy() { 349 let applicationContext = this.context.getApplicationContext(); 350 applicationContext.off('applicationStateChange'); 351 } 352} 353``` 354 355## ApplicationContext.getRunningProcessInformation<sup>9+</sup> 356 357getRunningProcessInformation(): Promise\<Array\<ProcessInformation>>; 358 359获取有关运行进程的信息。 360 361**系统能力**:SystemCapability.Ability.AbilityRuntime.Core 362 363**返回值:** 364 365| 类型 | 说明 | 366| -------- | -------- | 367| Promise\<Array\<[ProcessInformation](js-apis-inner-application-processInformation.md)>> | 以Promise方式返回接口运行结果及有关运行进程的信息,可进行错误处理或其他自定义处理。 | 368 369**错误码**: 370 371| 错误码ID | 错误信息 | 372| ------- | -------- | 373| 16000011 | The context does not exist. | 374| 16000050 | Internal error. | 375 376以上错误码详细介绍请参考[errcode-ability](../errorcodes/errorcode-ability.md)。 377 378**示例:** 379 380```ts 381import UIAbility from '@ohos.app.ability.UIAbility'; 382import { BusinessError } from '@ohos.base'; 383 384export default class MyAbility extends UIAbility { 385 onForeground() { 386 let applicationContext = this.context.getApplicationContext(); 387 applicationContext.getRunningProcessInformation().then((data) => { 388 console.log(`The process running information is: ${JSON.stringify(data)}`); 389 }).catch((error: BusinessError) => { 390 console.error(`error: ${JSON.stringify(error)}`); 391 }); 392 } 393} 394``` 395 396## ApplicationContext.getRunningProcessInformation<sup>9+</sup> 397 398getRunningProcessInformation(callback: AsyncCallback\<Array\<ProcessInformation>>): void; 399 400获取有关运行进程的信息。 401 402**系统能力**:SystemCapability.Ability.AbilityRuntime.Core 403 404**返回值:** 405 406| 类型 | 说明 | 407| -------- | -------- | 408|AsyncCallback\<Array\<[ProcessInformation](js-apis-inner-application-processInformation.md)>> | 以回调方式返回接口运行结果及有关运行进程的信息,可进行错误处理或其他自定义处理。 | 409 410**错误码**: 411 412| 错误码ID | 错误信息 | 413| ------- | -------- | 414| 16000011 | The context does not exist. | 415| 16000050 | Internal error. | 416 417以上错误码详细介绍请参考[errcode-ability](../errorcodes/errorcode-ability.md)。 418 419**示例:** 420 421```ts 422import UIAbility from '@ohos.app.ability.UIAbility'; 423 424export default class MyAbility extends UIAbility { 425 onForeground() { 426 let applicationContext = this.context.getApplicationContext(); 427 applicationContext.getRunningProcessInformation((err, data) => { 428 if (err) { 429 console.error(`getRunningProcessInformation faile, err: ${JSON.stringify(err)}`); 430 } else { 431 console.log(`The process running information is: ${JSON.stringify(data)}`); 432 } 433 }) 434 } 435} 436``` 437 438## ApplicationContext.killAllProcesses<sup>9+</sup> 439 440killAllProcesses(): Promise\<void\>; 441 442杀死应用所在的进程。 443 444**系统能力**:SystemCapability.Ability.AbilityRuntime.Core 445 446**返回值:** 447 448| 类型 | 说明 | 449| -------- | -------- | 450| Promise\<void\> | 以Promise方式返回杀死应用所在的进程结果。 | 451 452**错误码**: 453 454| 错误码ID | 错误信息 | 455| ------- | -------- | 456| 16000011 | The context does not exist. | 457 458以上错误码详细介绍请参考[errcode-ability](../errorcodes/errorcode-ability.md)。 459 460**示例:** 461 462```ts 463import UIAbility from '@ohos.app.ability.UIAbility'; 464 465export default class MyAbility extends UIAbility { 466 onBackground() { 467 let applicationContext = this.context.getApplicationContext(); 468 applicationContext.killAllProcesses(); 469 } 470} 471``` 472 473## ApplicationContext.killAllProcesses<sup>9+</sup> 474 475killAllProcesses(callback: AsyncCallback\<void\>); 476 477杀死应用所在的进程。 478 479**系统能力**:SystemCapability.Ability.AbilityRuntime.Core 480 481**返回值:** 482 483| 类型 | 说明 | 484| -------- | -------- | 485|AsyncCallback\<void\> | 以callback方式返回杀死应用所在的进程结果。 | 486 487**错误码**: 488 489| 错误码ID | 错误信息 | 490| ------- | -------- | 491| 16000011 | The context does not exist. | 492 493以上错误码详细介绍请参考[errcode-ability](../errorcodes/errorcode-ability.md)。 494 495**示例:** 496 497```ts 498import UIAbility from '@ohos.app.ability.UIAbility'; 499 500export default class MyAbility extends UIAbility { 501 onBackground() { 502 let applicationContext = this.context.getApplicationContext(); 503 applicationContext.killAllProcesses(error => { 504 if (error) { 505 console.error(`killAllProcesses fail, error: ${JSON.stringify(error)}`); 506 } 507 }); 508 } 509} 510```