# @ohos.app.ability.appManager (appManager) appManager模块提供App管理的能力,包括查询当前是否处于稳定性测试场景、查询是否为ram受限设备、获取应用程序的内存大小、获取有关运行进程的信息等。 > **说明:** > > 本模块首批接口从API version 9 开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 ## 导入模块 ```ts import { appManager } from '@kit.AbilityKit'; ``` ## ProcessState10+ 表示进程状态的枚举。 **原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。 **系统能力**:SystemCapability.Ability.AbilityRuntime.Core | 名称 | 值 | 说明 | | -------------------- | --- | --------------------------------- | | STATE_CREATE | 0 | 进程处于创建状态。 | | STATE_FOREGROUND | 1 | 进程处于前台状态。 | | STATE_ACTIVE | 2 | 进程处于获焦状态。 | | STATE_BACKGROUND | 3 | 进程处于后台不可见状态。 | | STATE_DESTROY | 4 | 进程处于销毁状态。 | ## appManager.isRunningInStabilityTest isRunningInStabilityTest(callback: AsyncCallback<boolean>): void 查询当前是否处于稳定性测试场景。使用callback异步回调。 **原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。 **系统能力**:SystemCapability.Ability.AbilityRuntime.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | -------- | -------- | -------- | | callback | AsyncCallback<boolean> | 是 |以回调方式返回接口运行结果及当前是否处于稳定性测试场景,可进行错误处理或其他自定义处理。true: 处于稳定性测试场景,false:处于非稳定性测试场景。 | **错误码**: 以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[元能力子系统错误码](errorcode-ability.md)。 | 错误码ID | 错误信息 | | ------- | -------- | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | | 16000050 | Internal error. | **示例:** ```ts import { appManager } from '@kit.AbilityKit'; appManager.isRunningInStabilityTest((err, flag) => { if (err) { console.error(`isRunningInStabilityTest fail, err: ${JSON.stringify(err)}`); } else { console.log(`The result of isRunningInStabilityTest is: ${JSON.stringify(flag)}`); } }); ``` ## appManager.isRunningInStabilityTest isRunningInStabilityTest(): Promise<boolean> 查询当前是否处于稳定性测试场景。使用Promise异步回调。 **原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。 **系统能力**:SystemCapability.Ability.AbilityRuntime.Core **返回值:** | 类型 | 说明 | | -------- | -------- | | Promise<boolean> | 以Promise方式返回接口运行结果及当前是否处于稳定性测试场景,可进行错误处理或其他自定义处理。true: 处于稳定性测试场景,false:处于非稳定性测试场景。 | **错误码**: 以下错误码详细介绍请参考[元能力子系统错误码](errorcode-ability.md)。 | 错误码ID | 错误信息 | | ------- | -------- | | 16000050 | Internal error. | **示例:** ```ts import { appManager } from '@kit.AbilityKit'; import { BusinessError } from '@kit.BasicServicesKit'; appManager.isRunningInStabilityTest().then((flag) => { console.log(`The result of isRunningInStabilityTest is: ${JSON.stringify(flag)}`); }).catch((error: BusinessError) => { console.error(`error: ${JSON.stringify(error)}`); }); ``` ## appManager.isRamConstrainedDevice isRamConstrainedDevice(): Promise\ 查询是否为ram受限设备。使用Promise异步回调。 **原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。 **系统能力**:SystemCapability.Ability.AbilityRuntime.Core **返回值:** | 类型 | 说明 | | -------- | -------- | | Promise<boolean> | 以Promise方式返回接口运行结果及当前设备是否为ram受限设备,可进行错误处理或其他自定义处理。true:当前设备为ram受限设备,false:当前设备为非ram受限设备。 | **错误码**: 以下错误码详细介绍请参考[元能力子系统错误码](errorcode-ability.md)。 | 错误码ID | 错误信息 | | ------- | -------- | | 16000050 | Internal error. | **示例:** ```ts import { appManager } from '@kit.AbilityKit'; import { BusinessError } from '@kit.BasicServicesKit'; appManager.isRamConstrainedDevice().then((data) => { console.log(`The result of isRamConstrainedDevice is: ${JSON.stringify(data)}`); }).catch((error: BusinessError) => { console.error(`error: ${JSON.stringify(error)}`); }); ``` ## appManager.isRamConstrainedDevice isRamConstrainedDevice(callback: AsyncCallback\): void 查询是否为ram受限设备。使用callback异步回调。 **原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。 **系统能力**:SystemCapability.Ability.AbilityRuntime.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | -------- | -------- | -------- | | callback | AsyncCallback<boolean> | 是 |以回调方式返回接口运行结果及当前设备是否为ram受限设备,可进行错误处理或其他自定义处理。true:当前设备为ram受限设备,false:当前设备为非ram受限设备。 | **错误码**: 以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[元能力子系统错误码](errorcode-ability.md)。 | 错误码ID | 错误信息 | | ------- | -------- | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | | 16000050 | Internal error. | **示例:** ```ts import { appManager } from '@kit.AbilityKit'; appManager.isRamConstrainedDevice((err, data) => { if (err) { console.error(`isRamConstrainedDevice fail, err: ${JSON.stringify(err)}`); } else { console.log(`The result of isRamConstrainedDevice is: ${JSON.stringify(data)}`); } }); ``` ## appManager.getAppMemorySize getAppMemorySize(): Promise\ 获取当前应用程序可以使用的内存的值。使用Promise异步回调。 **原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。 **系统能力**:SystemCapability.Ability.AbilityRuntime.Core **返回值:** | 类型 | 说明 | | -------- | -------- | | Promise<number> | 获取当前应用程序可以使用的内存的值,可根据此值进行错误处理或其他自定义处理,单位是M。使用Promise异步回调。| **错误码**: 以下错误码详细介绍请参考[元能力子系统错误码](errorcode-ability.md)。 | 错误码ID | 错误信息 | | ------- | -------- | | 16000050 | Internal error. | **示例:** ```ts import { appManager } from '@kit.AbilityKit'; import { BusinessError } from '@kit.BasicServicesKit'; appManager.getAppMemorySize().then((data) => { console.log(`The size of app memory is: ${JSON.stringify(data)}`); }).catch((error: BusinessError) => { console.error(`error: ${JSON.stringify(error)}`); }); ``` ## appManager.getAppMemorySize getAppMemorySize(callback: AsyncCallback\): void 获取当前应用程序可以使用的内存的值。使用callback异步回调。 **原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。 **系统能力**:SystemCapability.Ability.AbilityRuntime.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | -------- | -------- | -------- | | callback | AsyncCallback<number> | 是 |获取当前应用程序可以使用的内存的值,可根据此值进行错误处理或其他自定义处理,单位是M。使用callback异步回调。| **错误码**: 以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[元能力子系统错误码](errorcode-ability.md)。 | 错误码ID | 错误信息 | | ------- | -------- | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | | 16000050 | Internal error. | **示例:** ```ts import { appManager } from '@kit.AbilityKit'; appManager.getAppMemorySize((err, data) => { if (err) { console.error(`getAppMemorySize fail, err: ${JSON.stringify(err)}`); } else { console.log(`The size of app memory is: ${JSON.stringify(data)}`); } }); ``` ## appManager.getRunningProcessInformation getRunningProcessInformation(): Promise\> 获取当前运行进程的有关信息。使用Promise异步回调。 > **说明:** > > API version 11之前的版本,该接口需要申请权限ohos.permission.GET_RUNNING_INFO(该权限仅系统应用可申请)。从API version 11开始,该接口不再需要申请权限。 **原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。 **系统能力**:SystemCapability.Ability.AbilityRuntime.Core **返回值:** | 类型 | 说明 | | -------- | -------- | | Promise\> | 以Promise方式返回接口运行结果及有关运行进程的信息,可进行错误处理或其他自定义处理。 | **错误码**: 以下错误码详细介绍请参考[元能力子系统错误码](errorcode-ability.md)。 | 错误码ID | 错误信息 | | ------- | -------- | | 16000050 | Internal error. | **示例:** ```ts import { appManager } from '@kit.AbilityKit'; import { BusinessError } from '@kit.BasicServicesKit'; appManager.getRunningProcessInformation().then((data) => { console.log(`The running process information is: ${JSON.stringify(data)}`); }).catch((error: BusinessError) => { console.error(`error: ${JSON.stringify(error)}`); }); ``` ## appManager.getRunningProcessInformation getRunningProcessInformation(callback: AsyncCallback\>): void 获取当前运行进程的有关信息。使用callback异步回调。 > **说明:** > > API version 11之前的版本,该接口需要申请权限ohos.permission.GET_RUNNING_INFO(该权限仅系统应用可申请)。从API version 11开始,该接口不再需要申请权限。 **原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。 **系统能力**:SystemCapability.Ability.AbilityRuntime.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | -------- | -------- | -------- | | callback | AsyncCallback\> | 是 |以callback方式返回接口运行结果及有关运行进程的信息,可进行错误处理或其他自定义处理。| **错误码**: 以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[元能力子系统错误码](errorcode-ability.md)。 | 错误码ID | 错误信息 | | ------- | -------- | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | | 16000050 | Internal error. | **示例:** ```ts import { appManager } from '@kit.AbilityKit'; appManager.getRunningProcessInformation((err, data) => { if (err) { console.error(`getRunningProcessInformation fail, err: ${JSON.stringify(err)}`); } else { console.log(`The running process information is: ${JSON.stringify(data)}`); } }); ``` ## appManager.on('applicationState')14+ on(type: 'applicationState', observer: ApplicationStateObserver): number 注册全部应用程序的状态观测器。 **需要权限**:ohos.permission.RUNNING_STATE_OBSERVER **系统能力**:SystemCapability.Ability.AbilityRuntime.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | -------- | -------- | -------- | | type | string | 是 | 调用接口类型,固定填'applicationState'字符串。 | | observer | [ApplicationStateObserver](js-apis-inner-application-applicationStateObserver.md) | 是 | 应用状态观测器,用于观测应用的生命周期变化。 | **返回值:** | 类型 | 说明 | | --- | --- | | number | 已注册观测器的数字代码,可用于off接口取消注册观测器。| **错误码**: 以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[元能力子系统错误码](errorcode-ability.md)。 | 错误码ID | 错误信息 | | ------- | -------- | | 201 | Permission denied. | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | | 16000050 | Internal error. | **示例:** ```ts import { appManager } from '@kit.AbilityKit'; import { BusinessError } from '@kit.BasicServicesKit'; let applicationStateObserver: appManager.ApplicationStateObserver = { onForegroundApplicationChanged(appStateData) { console.log(`[appManager] onForegroundApplicationChanged: ${JSON.stringify(appStateData)}`); }, onAbilityStateChanged(abilityStateData) { console.log(`[appManager] onAbilityStateChanged: ${JSON.stringify(abilityStateData)}`); }, onProcessCreated(processData) { console.log(`[appManager] onProcessCreated: ${JSON.stringify(processData)}`); }, onProcessDied(processData) { console.log(`[appManager] onProcessDied: ${JSON.stringify(processData)}`); }, onProcessStateChanged(processData) { console.log(`[appManager] onProcessStateChanged: ${JSON.stringify(processData)}`); }, onAppStarted(appStateData) { console.log(`[appManager] onAppStarted: ${JSON.stringify(appStateData)}`); }, onAppStopped(appStateData) { console.log(`[appManager] onAppStopped: ${JSON.stringify(appStateData)}`); } }; try { const observerId = appManager.on('applicationState', applicationStateObserver); console.log(`[appManager] observerCode: ${observerId}`); } catch (paramError) { let code = (paramError as BusinessError).code; let message = (paramError as BusinessError).message; console.error(`[appManager] error: ${code}, ${message}`); } ``` ## appManager.on('applicationState')14+ on(type: 'applicationState', observer: ApplicationStateObserver, bundleNameList: Array\): number 注册指定应用程序的状态观测器。 **需要权限**:ohos.permission.RUNNING_STATE_OBSERVER **系统能力**:SystemCapability.Ability.AbilityRuntime.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | -------- | -------- | -------- | | type | string | 是 | 调用接口类型,固定填'applicationState'字符串。 | | observer | [ApplicationStateObserver](js-apis-inner-application-applicationStateObserver.md) | 是 | 应用状态观测器,用于观测应用的生命周期变化。 | | bundleNameList | `Array` | 是 | 表示需要注册监听的bundleName数组。最大值128。 | **返回值:** | 类型 | 说明 | | --- | --- | | number | 已注册观测器的数字代码,可用于off接口注销观测器。| **错误码**: 以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[元能力子系统错误码](errorcode-ability.md)。 | 错误码ID | 错误信息 | | ------- | -------- | | 201 | Permission denied. | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | | 16000050 | Internal error. | **示例:** ```ts import { appManager } from '@kit.AbilityKit'; import { BusinessError } from '@kit.BasicServicesKit'; let applicationStateObserver: appManager.ApplicationStateObserver = { onForegroundApplicationChanged(appStateData) { console.log(`[appManager] onForegroundApplicationChanged: ${JSON.stringify(appStateData)}`); }, onAbilityStateChanged(abilityStateData) { console.log(`[appManager] onAbilityStateChanged: ${JSON.stringify(abilityStateData)}`); }, onProcessCreated(processData) { console.log(`[appManager] onProcessCreated: ${JSON.stringify(processData)}`); }, onProcessDied(processData) { console.log(`[appManager] onProcessDied: ${JSON.stringify(processData)}`); }, onProcessStateChanged(processData) { console.log(`[appManager] onProcessStateChanged: ${JSON.stringify(processData)}`); }, onAppStarted(appStateData) { console.log(`[appManager] onAppStarted: ${JSON.stringify(appStateData)}`); }, onAppStopped(appStateData) { console.log(`[appManager] onAppStopped: ${JSON.stringify(appStateData)}`); } }; let bundleNameList = ['bundleName1', 'bundleName2']; try { const observerId = appManager.on('applicationState', applicationStateObserver, bundleNameList); console.log(`[appManager] observerCode: ${observerId}`); } catch (paramError) { let code = (paramError as BusinessError).code; let message = (paramError as BusinessError).message; console.error(`[appManager] error: ${code}, ${message}`); } ``` ## appManager.off('applicationState')14+ off(type: 'applicationState', observerId: number): Promise\ 取消注册应用程序状态观测器。 **需要权限**:ohos.permission.RUNNING_STATE_OBSERVER **系统能力**:SystemCapability.Ability.AbilityRuntime.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | -------- | -------- | -------- | | type | string | 是 | 调用接口类型,固定填'applicationState'字符串。 | | observerId | number | 是 | 表示观测器的编号代码。 | **返回值:** | 类型 | 说明 | | -------- | -------- | | Promise\ | 以Promise方式返回接口运行结果,可进行错误处理或其他自定义处理。 | **错误码**: 以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[元能力子系统错误码](errorcode-ability.md)。 | 错误码ID | 错误信息 | | ------- | -------- | | 201 | Permission denied. | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | | 16000050 | Internal error. | **示例:** ```ts import { appManager } from '@kit.AbilityKit'; import { BusinessError } from '@kit.BasicServicesKit'; let observerId = 0; // 1.注册应用状态监听器 let applicationStateObserver: appManager.ApplicationStateObserver = { onForegroundApplicationChanged(appStateData) { console.log(`[appManager] onForegroundApplicationChanged: ${JSON.stringify(appStateData)}`); }, onAbilityStateChanged(abilityStateData) { console.log(`[appManager] onAbilityStateChanged: ${JSON.stringify(abilityStateData)}`); }, onProcessCreated(processData) { console.log(`[appManager] onProcessCreated: ${JSON.stringify(processData)}`); }, onProcessDied(processData) { console.log(`[appManager] onProcessDied: ${JSON.stringify(processData)}`); }, onProcessStateChanged(processData) { console.log(`[appManager] onProcessStateChanged: ${JSON.stringify(processData)}`); }, onAppStarted(appStateData) { console.log(`[appManager] onAppStarted: ${JSON.stringify(appStateData)}`); }, onAppStopped(appStateData) { console.log(`[appManager] onAppStopped: ${JSON.stringify(appStateData)}`); } }; let bundleNameList = ['bundleName1', 'bundleName2']; try { observerId = appManager.on('applicationState', applicationStateObserver, bundleNameList); } catch (paramError) { let code = (paramError as BusinessError).code; let message = (paramError as BusinessError).message; console.error(`[appManager] error: ${code}, ${message}`); } // 2.注销应用状态监听器 try { appManager.off('applicationState', observerId).then((data) => { console.log(`unregisterApplicationStateObserver success, data: ${JSON.stringify(data)}`); }).catch((err: BusinessError) => { console.error(`unregisterApplicationStateObserver fail, err: ${JSON.stringify(err)}`); }); } catch (paramError) { let code = (paramError as BusinessError).code; let message = (paramError as BusinessError).message; console.error(`[appManager] error: ${code}, ${message}`); } ``` ## appManager.killProcessesByBundleName14+ killProcessesByBundleName(bundleName: string, clearPageStack: boolean, appIndex?: number): Promise\ 通过Bundle名称终止进程。使用Promise异步回调。 **需要权限**:ohos.permission.KILL_APP_PROCESSES 或 ohos.permission.CLEAN_BACKGROUND_PROCESSES **系统能力**:SystemCapability.Ability.AbilityRuntime.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | -------- | -------- | -------- | | bundleName | string | 是 | 表示Bundle名称。 | | clearPageStack | boolean | 是 | 表示是否清除页面堆栈。true表示清除,false表示不清除。 | | appIndex | number | 否 | 应用分身Id。 | **返回值:** | 类型 | 说明 | | -------- | -------- | | Promise\ | Promise对象。无返回结果的Promise对象。 | **错误码**: 以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[元能力子系统错误码](errorcode-ability.md)。 | 错误码ID | 错误信息 | | ------- | -------- | | 201 | Permission denied. | | 401 | If the input parameter is not valid parameter. | | 16000050 | Internal error. | **示例:** ```ts import { appManager } from '@kit.AbilityKit'; import { BusinessError } from '@kit.BasicServicesKit'; let bundleName = 'bundleName'; let isClearPageStack = false; let appIndex = 1; try { appManager.killProcessesByBundleName(bundleName, isClearPageStack, appIndex).then((data) => { console.log('killProcessesByBundleName success.'); }).catch((err: BusinessError) => { console.error(`killProcessesByBundleName fail, err: ${JSON.stringify(err)}`); }); } catch (paramError) { let code = (paramError as BusinessError).code; let message = (paramError as BusinessError).message; console.error(`[appManager] error: ${code}, ${message}`); } ``` ## appManager.isAppRunning14+ isAppRunning(bundleName: string, appCloneIndex?: number): Promise\ 判断应用是否在运行。使用Promise异步回调。 **需要权限**:ohos.permission.GET_RUNNING_INFO **系统能力**:SystemCapability.Ability.AbilityRuntime.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | -------- | -------- | -------- | | bundleName | string | 是 | 查询的应用包名。 | | appCloneIndex | number | 否 | 分身应用索引。 | **返回值:** | 类型 | 说明 | | -------------- | ---------------- | | Promise\ | Promise对象。返回true表示应用正在运行,返回false表示应用未运行。 | **错误码**: 以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[元能力子系统错误码](errorcode-ability.md)。 | 错误码ID | 错误信息 | | ------- | -------- | | 201 | Permission denied. | | 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified; 2.Incorrect parameter types; 3.Parameter verification failed. | | 16000050 | Internal error. | | 16000073 | The app clone index is invalid. | **示例:** ```ts import { appManager } from '@kit.AbilityKit'; import { hilog } from '@kit.PerformanceAnalysisKit'; import { BusinessError } from '@kit.BasicServicesKit'; try { let bundleName = "ohos.samples.etsclock"; appManager.isAppRunning(bundleName).then((data: boolean) => { hilog.info(0x0000, 'testTag', `data: ${JSON.stringify(data)}`); }).catch((err: BusinessError) => { hilog.error(0x0000, 'testTag', `isAppRunning error, code: ${err.code}, msg:${err.message}`); }) } catch (err) { hilog.error(0x0000, 'testTag', `isAppRunning error, code: ${err.code}, msg:${err.message}`); } ``` ## ApplicationStateObserver14+ type ApplicationStateObserver = _ApplicationStateObserver.default ApplicationStateObserver模块。 **系统能力**:SystemCapability.Ability.AbilityRuntime.Core | 类型 | 说明 | | --- | --- | | [_ApplicationStateObserver.default](js-apis-inner-application-applicationStateObserver.md) | ApplicationStateObserver模块。 | ## ProcessInformation type ProcessInformation = _ProcessInformation ProcessInformation模块。 **原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。 **系统能力**:SystemCapability.Ability.AbilityRuntime.Core | 类型 | 说明 | | --- | --- | | [_ProcessInformation](js-apis-inner-application-processInformation.md) | ProcessInformation模块。 |