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 21let applicationContext: common.ApplicationContext = this.context.getApplicationContext(); 22``` 23 24## ApplicationContext.on(type: 'abilityLifecycle', callback: AbilityLifecycleCallback) 25 26on(type: 'abilityLifecycle', callback: AbilityLifecycleCallback): **number**; 27 28注册监听应用内生命周期 29 30**系统能力**:SystemCapability.Ability.AbilityRuntime.Core 31 32**参数:** 33 34| 参数名 | 类型 | 必填 | 说明 | 35| ------------------------ | -------- | ---- | ------------------------------ | 36| type | 'abilityLifecycle' | 是 | 监听事件的类型。 | 37| callback | [AbilityLifecycleCallback](js-apis-app-ability-abilityLifecycleCallback.md) | 是 | 回调方法,返回注册监听事件的ID。 | 38 39**返回值:** 40 41| 类型 | 说明 | 42| ------ | ------------------------------ | 43| number | 返回的此次注册监听生命周期的ID(每次注册该ID会自增+1,当超过监听上限数量2^63-1时,返回-1)。| 44 45**示例:** 46 47```ts 48import UIAbility from '@ohos.app.ability.UIAbility'; 49 50let lifecycleId; 51 52export default class EntryAbility extends UIAbility { 53 onCreate() { 54 console.log('MyAbility onCreate'); 55 let AbilityLifecycleCallback = { 56 onAbilityCreate(ability) { 57 console.log('AbilityLifecycleCallback onAbilityCreate ability:' + ability); 58 }, 59 onWindowStageCreate(ability, windowStage) { 60 console.log('AbilityLifecycleCallback onWindowStageCreate ability:' + ability); 61 console.log('AbilityLifecycleCallback onWindowStageCreate windowStage:' + windowStage); 62 }, 63 onWindowStageActive(ability, windowStage) { 64 console.log('AbilityLifecycleCallback onWindowStageActive ability:' + ability); 65 console.log('AbilityLifecycleCallback onWindowStageActive windowStage:' + windowStage); 66 }, 67 onWindowStageInactive(ability, windowStage) { 68 console.log('AbilityLifecycleCallback onWindowStageInactive ability:' + ability); 69 console.log('AbilityLifecycleCallback onWindowStageInactive windowStage:' + windowStage); 70 }, 71 onWindowStageDestroy(ability, windowStage) { 72 console.log('AbilityLifecycleCallback onWindowStageDestroy ability:' + ability); 73 console.log('AbilityLifecycleCallback onWindowStageDestroy windowStage:' + windowStage); 74 }, 75 onAbilityDestroy(ability) { 76 console.log('AbilityLifecycleCallback onAbilityDestroy ability:' + ability); 77 }, 78 onAbilityForeground(ability) { 79 console.log('AbilityLifecycleCallback onAbilityForeground ability:' + ability); 80 }, 81 onAbilityBackground(ability) { 82 console.log('AbilityLifecycleCallback onAbilityBackground ability:' + ability); 83 }, 84 onAbilityContinue(ability) { 85 console.log('AbilityLifecycleCallback onAbilityContinue ability:' + ability); 86 } 87 } 88 // 1.通过context属性获取applicationContext 89 let applicationContext = this.context.getApplicationContext(); 90 // 2.通过applicationContext注册监听应用内生命周期 91 lifecycleId = applicationContext.on('abilityLifecycle', AbilityLifecycleCallback); 92 console.log('registerAbilityLifecycleCallback number: ' + JSON.stringify(lifecycleId)); 93 } 94} 95``` 96 97## ApplicationContext.off(type: 'abilityLifecycle', callbackId: number, callback: AsyncCallback\<void>) 98 99off(type: 'abilityLifecycle', callbackId: **number**, callback: AsyncCallback<**void**>): **void**; 100 101取消监听应用内生命周期 102 103**系统能力**:SystemCapability.Ability.AbilityRuntime.Core 104 105**参数:** 106 107| 参数名 | 类型 | 必填 | 说明 | 108| ------------- | -------- | ---- | -------------------------- | 109| type | 'abilityLifecycle' | 是 | 取消监听事件的类型。 | 110| callbackId | number | 是 | 注册监听应用内生命周期的ID。 | 111| callback | AsyncCallback\<void> | 是 | 回调方法。 | 112 113**示例:** 114 115```ts 116import UIAbility from '@ohos.app.ability.UIAbility'; 117 118let lifecycleId; 119 120export default class EntryAbility extends UIAbility { 121 onDestroy() { 122 let applicationContext = this.context.getApplicationContext(); 123 console.log('stage applicationContext: ' + applicationContext); 124 applicationContext.off('abilityLifecycle', lifecycleId, (error, data) => { 125 console.log('unregisterAbilityLifecycleCallback success, err: ' + JSON.stringify(error)); 126 }); 127 } 128} 129``` 130 131## ApplicationContext.off(type: 'abilityLifecycle', callbackId: number) 132 133off(type: 'abilityLifecycle', callbackId: **number**): **void**; 134 135取消监听应用内生命周期 136 137**系统能力**:SystemCapability.Ability.AbilityRuntime.Core 138 139**参数:** 140 141| 参数名 | 类型 | 必填 | 说明 | 142| ------------- | -------- | ---- | -------------------------- | 143| type | 'abilityLifecycle' | 是 | 取消监听事件的类型。 | 144| callbackId | number | 是 | 注册监听应用内生命周期的ID。 | 145 146**示例:** 147 148```ts 149import Ability from '@ohos.app.ability.UIAbility'; 150 151let lifecycleId; 152 153export default class MyAbility extends Ability { 154 onDestroy() { 155 let applicationContext = this.context.getApplicationContext(); 156 console.log('stage applicationContext: ' + applicationContext); 157 applicationContext.off('abilityLifecycle', lifecycleId); 158 } 159} 160``` 161 162## ApplicationContext.on(type: 'environment', callback: EnvironmentCallback) 163 164on(type: 'environment', callback: EnvironmentCallback): **number**; 165 166注册对系统环境变化的监听。使用callback异步回调。 167 168**系统能力**:SystemCapability.Ability.AbilityRuntime.Core 169 170**参数:** 171 172| 参数名 | 类型 | 必填 | 说明 | 173| ------------------------ | -------- | ---- | ------------------------------ | 174| type | 'environment' | 是 | 监听事件的类型。 | 175| callback | [EnvironmentCallback](js-apis-app-ability-environmentCallback.md) | 是 | 回调方法,返回注册监听事件的ID。 | 176 177**返回值:** 178 179| 类型 | 说明 | 180| ------ | ------------------------------ | 181| number | 返回的此次注册监听系统环境变化的ID(每次注册该ID会自增+1,当超过监听上限数量2^63-1时,返回-1)。| 182 183**示例:** 184 185```ts 186import UIAbility from '@ohos.app.ability.UIAbility'; 187 188let callbackId; 189 190export default class EntryAbility extends UIAbility { 191 onCreate() { 192 console.log('MyAbility onCreate') 193 globalThis.applicationContext = this.context.getApplicationContext(); 194 let environmentCallback = { 195 onConfigurationUpdated(config){ 196 console.log('onConfigurationUpdated config:' + JSON.stringify(config)); 197 }, 198 onMemoryLevel(level){ 199 console.log('onMemoryLevel level:' + level); 200 } 201 } 202 // 1.获取applicationContext 203 let applicationContext = globalThis.applicationContext; 204 // 2.通过applicationContext注册监听应用内生命周期 205 callbackId = applicationContext.on('environment', environmentCallback); 206 console.log('registerEnvironmentCallback callbackId: ${callbackId}'); 207 } 208} 209``` 210 211## ApplicationContext.off(type: 'environment', callbackId: number, callback: AsyncCallback\<void>) 212 213off(type: 'environment', callbackId: **number**, callback: AsyncCallback<**void**>): **void**; 214 215取消对系统环境变化的监听。使用callback异步回调。 216 217**系统能力**:SystemCapability.Ability.AbilityRuntime.Core 218 219**参数:** 220 221| 参数名 | 类型 | 必填 | 说明 | 222| ------------- | -------- | ---- | -------------------------- | 223| type | 'environment' | 是 | 取消监听事件的类型。 | 224| callbackId | number | 是 | 注册监听系统环境变化的ID。 | 225| callback | AsyncCallback\<void> | 是 | 回调方法。 | 226 227**示例:** 228 229```ts 230import UIAbility from '@ohos.app.ability.UIAbility'; 231 232let callbackId; 233 234export default class EntryAbility extends UIAbility { 235 onDestroy() { 236 let applicationContext = this.context.getApplicationContext(); 237 applicationContext.off('environment', callbackId, (error, data) => { 238 console.log('unregisterEnvironmentCallback success, err: ' + JSON.stringify(error)); 239 }); 240 } 241} 242``` 243 244## ApplicationContext.off(type: 'environment', callbackId: number) 245 246off(type: 'environment', callbackId: **number**, callback: AsyncCallback<**void**>): **void**; 247 248取消对系统环境变化的监听。使用callback异步回调。 249 250**系统能力**:SystemCapability.Ability.AbilityRuntime.Core 251 252**参数:** 253 254| 参数名 | 类型 | 必填 | 说明 | 255| ------------- | -------- | ---- | -------------------------- | 256| type | 'environment' | 是 | 取消监听事件的类型。 | 257| callbackId | number | 是 | 注册监听系统环境变化的ID。 | 258 259**示例:** 260 261```ts 262import Ability from '@ohos.app.ability.UIAbility'; 263 264let callbackId; 265 266export default class MyAbility extends Ability { 267 onDestroy() { 268 let applicationContext = this.context.getApplicationContext(); 269 applicationContext.off('environment', callbackId); 270 } 271} 272``` 273 274## ApplicationContext.getRunningProcessInformation<sup>9+</sup> 275 276getRunningProcessInformation(): Promise\<Array\<ProcessInformation>>; 277 278获取有关运行进程的信息。 279 280**需要权限**:ohos.permission.GET_RUNNING_INFO 281 282**系统能力**:SystemCapability.Ability.AbilityRuntime.Core 283 284**系统API**: 此接口为系统接口,三方应用不支持调用。 285 286**返回值:** 287 288| 类型 | 说明 | 289| -------- | -------- | 290| Promise\<Array\<[ProcessInformation](js-apis-inner-application-processInformation.md)>> | 以Promise方式返回接口运行结果及有关运行进程的信息,可进行错误处理或其他自定义处理。 | 291 292**错误码**: 293 294| 错误码ID | 错误信息 | 295| ------- | -------- | 296| 16000011 | The context does not exist. | 297| 16000050 | Internal error. | 298 299以上错误码详细介绍请参考[errcode-ability](../errorcodes/errorcode-ability.md)。 300 301**示例:** 302 303```ts 304applicationContext.getRunningProcessInformation().then((data) => { 305 console.log('The process running information is:' + JSON.stringify(data)); 306}).catch((error) => { 307 console.log('error:' + JSON.stringify(error)); 308}); 309``` 310 311## ApplicationContext.getRunningProcessInformation<sup>9+</sup> 312 313getRunningProcessInformation(callback: AsyncCallback\<Array\<ProcessInformation>>): void; 314 315获取有关运行进程的信息。 316 317**需要权限**:ohos.permission.GET_RUNNING_INFO 318 319**系统能力**:SystemCapability.Ability.AbilityRuntime.Core 320 321**系统API**: 此接口为系统接口,三方应用不支持调用。 322 323**返回值:** 324 325| 类型 | 说明 | 326| -------- | -------- | 327|AsyncCallback\<Array\<[ProcessInformation](js-apis-inner-application-processInformation.md)>> | 以回调方式返回接口运行结果及有关运行进程的信息,可进行错误处理或其他自定义处理。 | 328 329**错误码**: 330 331| 错误码ID | 错误信息 | 332| ------- | -------- | 333| 16000011 | The context does not exist. | 334| 16000050 | Internal error. | 335 336以上错误码详细介绍请参考[errcode-ability](../errorcodes/errorcode-ability.md)。 337 338**示例:** 339 340```ts 341applicationContext.getRunningProcessInformation((err, data) => { 342 if (err.code !== 0) { 343 console.error('getRunningProcessInformation faile, err: ' + JSON.stringify(err)); 344 } else { 345 console.log('The process running information is:' + JSON.stringify(data)); 346 } 347}) 348``` 349 350## ApplicationContext.killProcessesBySelf<sup>9+</sup> 351 352killProcessesBySelf(): Promise\<void>; 353 354杀死应用所在的进程。 355 356**系统能力**:SystemCapability.Ability.AbilityRuntime.Core 357 358**返回值:** 359 360| 类型 | 说明 | 361| -------- | -------- | 362| Promise\<void>> | 以Promise方式返回杀死应用所在的进程结果。 | 363 364**错误码**: 365 366| 错误码ID | 错误信息 | 367| ------- | -------- | 368| 16000011 | The context does not exist. | 369 370以上错误码详细介绍请参考[errcode-ability](../errorcodes/errorcode-ability.md)。 371 372**示例:** 373 374```ts 375let applicationContext = this.context.getApplicationContext(); 376applicationContext.killProcessesBySelf().then((data) => { 377 console.log('The process running information is:' + JSON.stringify(data)); 378}).catch((error) => { 379 console.error('error:' + JSON.stringify(error)); 380}); 381``` 382 383## ApplicationContext.killProcessesBySelf<sup>9+</sup> 384 385killProcessesBySelf(callback: AsyncCallback\<void>); 386 387杀死应用所在的进程。 388 389**系统能力**:SystemCapability.Ability.AbilityRuntime.Core 390 391**返回值:** 392 393| 类型 | 说明 | 394| -------- | -------- | 395|AsyncCallback\<void> | 以callback方式返回杀死应用所在的进程结果。 | 396 397**错误码**: 398 399| 错误码ID | 错误信息 | 400| ------- | -------- | 401| 16000011 | The context does not exist. | 402 403以上错误码详细介绍请参考[errcode-ability](../errorcodes/errorcode-ability.md)。 404 405**示例:** 406 407```ts 408applicationContext.killAllProcesses(error => { 409 if (error) { 410 console.error('killAllProcesses fail, error: ${JSON.stringify(error)}'); 411 } 412}) 413```