未验证 提交 ac819e96 编写于 作者: O openharmony_ci 提交者: Gitee

!10688 资源调度后台任务错误码api文档修改

Merge pull request !10688 from 朱天怡/master
# 接口 # 接口
- [开发说明](development-intro.md) - [开发说明](development-intro.md)
- Ability框架 - Ability框架
- FA模型 - FA模型
...@@ -116,11 +116,11 @@ ...@@ -116,11 +116,11 @@
- [@ohos.intl (国际化-Intl)](js-apis-intl.md) - [@ohos.intl (国际化-Intl)](js-apis-intl.md)
- [@ohos.resourceManager (资源管理)](js-apis-resource-manager.md) - [@ohos.resourceManager (资源管理)](js-apis-resource-manager.md)
- 资源调度 - 资源调度
- [@ohos.backgroundTaskManager (后台任务管理)](js-apis-backgroundTaskManager.md)
- [@ohos.distributedMissionManager (分布式任务管理)](js-apis-distributedMissionManager.md) - [@ohos.distributedMissionManager (分布式任务管理)](js-apis-distributedMissionManager.md)
- [@ohos.reminderAgentManager (后台代理提醒)](js-apis-reminderAgentManager.md) - [@ohos.reminderAgentManager (后台代理提醒)](js-apis-reminderAgentManager.md)
- [@ohos.resourceschedule.backgroundTaskManager (后台任务管理)](js-apis-resourceschedule-backgroundTaskManager.md)
- [@ohos.resourceschedule.workScheduler (延迟任务调度)](js-apis-resourceschedule-workScheduler.md)
- [@ohos.resourceschedule.usageStatistics (设备使用信息统计)](js-apis-resourceschedule-deviceUsageStatistics.md) - [@ohos.resourceschedule.usageStatistics (设备使用信息统计)](js-apis-resourceschedule-deviceUsageStatistics.md)
- [@ohos.workScheduler (延迟任务调度)](js-apis-workScheduler.md)
- [@ohos.WorkSchedulerExtensionAbility (延迟任务调度回调)](js-apis-WorkSchedulerExtensionAbility.md) - [@ohos.WorkSchedulerExtensionAbility (延迟任务调度回调)](js-apis-WorkSchedulerExtensionAbility.md)
- 定制管理 - 定制管理
- [@ohos.configPolicy (配置策略)](js-apis-config-policy.md) - [@ohos.configPolicy (配置策略)](js-apis-config-policy.md)
...@@ -269,6 +269,7 @@ ...@@ -269,6 +269,7 @@
- [@ohos.application.testRunner (TestRunner)](js-apis-testRunner.md) - [@ohos.application.testRunner (TestRunner)](js-apis-testRunner.md)
- [@ohos.uitest (UiTest)](js-apis-uitest.md) - [@ohos.uitest (UiTest)](js-apis-uitest.md)
- 已停止维护的接口 - 已停止维护的接口
- [@ohos.backgroundTaskManager (后台任务管理)](js-apis-backgroundTaskManager.md)
- [@ohos.bundleState (设备使用信息统计)](js-apis-deviceUsageStatistics.md) - [@ohos.bundleState (设备使用信息统计)](js-apis-deviceUsageStatistics.md)
- [@ohos.bytrace (性能打点)](js-apis-bytrace.md) - [@ohos.bytrace (性能打点)](js-apis-bytrace.md)
- [@ohos.data.storage (轻量级存储)](js-apis-data-storage.md) - [@ohos.data.storage (轻量级存储)](js-apis-data-storage.md)
......
...@@ -28,7 +28,7 @@ onWorkStart(work: workScheduler.WorkInfo): void ...@@ -28,7 +28,7 @@ onWorkStart(work: workScheduler.WorkInfo): void
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| ---- | ---------------------------------------- | ---- | -------------- | | ---- | ---------------------------------------- | ---- | -------------- |
| work | [workScheduler.WorkInfo](js-apis-workScheduler.md#workinfo) | 是 | 指示要添加到执行队列的工作。 | | work | [workScheduler.WorkInfo](js-apis-resourceschedule-workScheduler.md#workinfo) | 是 | 指示要添加到执行队列的工作。 |
**示例:** **示例:**
...@@ -52,7 +52,7 @@ onWorkStop(work: workScheduler.WorkInfo): void ...@@ -52,7 +52,7 @@ onWorkStop(work: workScheduler.WorkInfo): void
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| ---- | ---------------------------------------- | ---- | -------------- | | ---- | ---------------------------------------- | ---- | -------------- |
| work | [workScheduler.WorkInfo](js-apis-workScheduler.md#workinfo) | 是 | 指示要添加到执行队列的工作。 | | work | [workScheduler.WorkInfo](js-apis-resourceschedule-workScheduler.md#workinfo) | 是 | 指示要添加到执行队列的工作。 |
**示例:** **示例:**
......
...@@ -11,7 +11,8 @@ ...@@ -11,7 +11,8 @@
对于系统特权应用,提供独立的能效资源申请接口。系统特权应用如果需要使用特定的系统资源,例如需要在被挂起期间仍然能够收到系统公共事件,可以使用能效资源申请接口。 对于系统特权应用,提供独立的能效资源申请接口。系统特权应用如果需要使用特定的系统资源,例如需要在被挂起期间仍然能够收到系统公共事件,可以使用能效资源申请接口。
> **说明:** > **说明:**
> 本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 > - 从API Version 9 开始,该接口不再维护,推荐使用新接口[@ohos.resourceschedule.backgroundTaskManager (后台任务管理)](js-apis-resourceschedule-backgroundTaskManager.md)
> - 本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
## 导入模块 ## 导入模块
...@@ -32,12 +33,14 @@ requestSuspendDelay(reason: string, callback: Callback<void>): DelaySuspen ...@@ -32,12 +33,14 @@ requestSuspendDelay(reason: string, callback: Callback<void>): DelaySuspen
**系统能力:** SystemCapability.ResourceSchedule.BackgroundTaskManager.TransientTask **系统能力:** SystemCapability.ResourceSchedule.BackgroundTaskManager.TransientTask
**参数** **参数**
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| -------- | -------------------- | ---- | ------------------------------ | | -------- | -------------------- | ---- | ------------------------------ |
| reason | string | 是 | 延迟挂起申请的原因。 | | reason | string | 是 | 延迟挂起申请的原因。 |
| callback | Callback<void> | 是 | 延迟即将超时的回调函数,一般在超时前6秒通过此回调通知应用。 | | callback | Callback<void> | 是 | 延迟即将超时的回调函数,一般在超时前6秒通过此回调通知应用。 |
**返回值** **返回值**
| 类型 | 说明 | | 类型 | 说明 |
| ------------------------------------- | --------- | | ------------------------------------- | --------- |
| [DelaySuspendInfo](#delaysuspendinfo) | 返回延迟挂起信息。 | | [DelaySuspendInfo](#delaysuspendinfo) | 返回延迟挂起信息。 |
...@@ -45,6 +48,8 @@ requestSuspendDelay(reason: string, callback: Callback<void>): DelaySuspen ...@@ -45,6 +48,8 @@ requestSuspendDelay(reason: string, callback: Callback<void>): DelaySuspen
**示例** **示例**
```js ```js
import backgroundTaskManager from '@ohos.backgroundTaskManager';
let myReason = 'test requestSuspendDelay'; let myReason = 'test requestSuspendDelay';
let delayInfo = backgroundTaskManager.requestSuspendDelay(myReason, () => { let delayInfo = backgroundTaskManager.requestSuspendDelay(myReason, () => {
console.info("Request suspension delay will time out."); console.info("Request suspension delay will time out.");
...@@ -66,6 +71,7 @@ getRemainingDelayTime(requestId: number, callback: AsyncCallback<number>): ...@@ -66,6 +71,7 @@ getRemainingDelayTime(requestId: number, callback: AsyncCallback<number>):
**系统能力:** SystemCapability.ResourceSchedule.BackgroundTaskManager.TransientTask **系统能力:** SystemCapability.ResourceSchedule.BackgroundTaskManager.TransientTask
**参数** **参数**
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| --------- | --------------------------- | ---- | ---------------------------------------- | | --------- | --------------------------- | ---- | ---------------------------------------- |
| requestId | number | 是 | 延迟挂起的请求ID。这个值通过调用[requestSuspendDelay](#backgroundtaskmanagerrequestsuspenddelay)方法获取。 | | requestId | number | 是 | 延迟挂起的请求ID。这个值通过调用[requestSuspendDelay](#backgroundtaskmanagerrequestsuspenddelay)方法获取。 |
...@@ -74,6 +80,8 @@ getRemainingDelayTime(requestId: number, callback: AsyncCallback<number>): ...@@ -74,6 +80,8 @@ getRemainingDelayTime(requestId: number, callback: AsyncCallback<number>):
**示例** **示例**
```js ```js
import backgroundTaskManager from '@ohos.backgroundTaskManager';
let delayInfo = backgroundTaskManager.requestSuspendDelay("test", () => {}); let delayInfo = backgroundTaskManager.requestSuspendDelay("test", () => {});
backgroundTaskManager.getRemainingDelayTime(delayInfo.requestId, (err, res) => { backgroundTaskManager.getRemainingDelayTime(delayInfo.requestId, (err, res) => {
if(err) { if(err) {
...@@ -94,16 +102,19 @@ getRemainingDelayTime(requestId: number): Promise<number> ...@@ -94,16 +102,19 @@ getRemainingDelayTime(requestId: number): Promise<number>
**系统能力:** SystemCapability.ResourceSchedule.BackgroundTaskManager.TransientTask **系统能力:** SystemCapability.ResourceSchedule.BackgroundTaskManager.TransientTask
**参数** **参数**
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| --------- | ------ | ---- | ---------- | | --------- | ------ | ---- | ---------- |
| requestId | number | 是 | 延迟挂起的请求ID。这个值通过调用[requestSuspendDelay](#backgroundtaskmanagerrequestsuspenddelay)方法获取。 | | requestId | number | 是 | 延迟挂起的请求ID。这个值通过调用[requestSuspendDelay](#backgroundtaskmanagerrequestsuspenddelay)方法获取。 |
**返回值** **返回值**
| 类型 | 说明 | | 类型 | 说明 |
| --------------------- | ---------------------------------------- | | --------------------- | ---------------------------------------- |
| Promise<number> | 指定的Promise回调方法。返回应用程序进入挂起状态之前的剩余时间,以毫秒为单位。 | | Promise<number> | 指定的Promise回调方法。返回应用程序进入挂起状态之前的剩余时间,以毫秒为单位。 |
**示例** **示例**
```js ```js
let delayInfo = backgroundTaskManager.requestSuspendDelay("test", () => {}); let delayInfo = backgroundTaskManager.requestSuspendDelay("test", () => {});
backgroundTaskManager.getRemainingDelayTime(delayInfo.requestId).then( res => { backgroundTaskManager.getRemainingDelayTime(delayInfo.requestId).then( res => {
...@@ -123,11 +134,13 @@ cancelSuspendDelay(requestId: number): void ...@@ -123,11 +134,13 @@ cancelSuspendDelay(requestId: number): void
**系统能力:** SystemCapability.ResourceSchedule.BackgroundTaskManager.TransientTask **系统能力:** SystemCapability.ResourceSchedule.BackgroundTaskManager.TransientTask
**参数** **参数**
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| --------- | ------ | ---- | ---------- | | --------- | ------ | ---- | ---------- |
| requestId | number | 是 | 延迟挂起的请求ID。这个值通过调用[requestSuspendDelay](#backgroundtaskmanagerrequestsuspenddelay)方法获取。 | | requestId | number | 是 | 延迟挂起的请求ID。这个值通过调用[requestSuspendDelay](#backgroundtaskmanagerrequestsuspenddelay)方法获取。 |
**示例** **示例**
```js ```js
let delayInfo = backgroundTaskManager.requestSuspendDelay("test", () => {}); let delayInfo = backgroundTaskManager.requestSuspendDelay("test", () => {});
backgroundTaskManager.cancelSuspendDelay(delayInfo.requestId); backgroundTaskManager.cancelSuspendDelay(delayInfo.requestId);
...@@ -145,6 +158,7 @@ startBackgroundRunning(context: Context, bgMode: BackgroundMode, wantAgent: Want ...@@ -145,6 +158,7 @@ startBackgroundRunning(context: Context, bgMode: BackgroundMode, wantAgent: Want
**系统能力:** SystemCapability.ResourceSchedule.BackgroundTaskManager.ContinuousTask **系统能力:** SystemCapability.ResourceSchedule.BackgroundTaskManager.ContinuousTask
**参数** **参数**
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| --------- | ---------------------------------- | ---- | ---------------------------------------- | | --------- | ---------------------------------- | ---- | ---------------------------------------- |
| context | Context | 是 | 应用运行的上下文。<br>FA模型的应用Context定义见[Context](js-apis-Context.md)<br>Stage模型的应用Context定义见[Context](js-apis-ability-context.md)。 | | context | Context | 是 | 应用运行的上下文。<br>FA模型的应用Context定义见[Context](js-apis-Context.md)<br>Stage模型的应用Context定义见[Context](js-apis-ability-context.md)。 |
...@@ -244,6 +258,7 @@ startBackgroundRunning(context: Context, bgMode: BackgroundMode, wantAgent: Want ...@@ -244,6 +258,7 @@ startBackgroundRunning(context: Context, bgMode: BackgroundMode, wantAgent: Want
| wantAgent | [WantAgent](js-apis-wantAgent.md) | 是 | 通知参数,用于指定长时任务通知点击跳转的界面。 | | wantAgent | [WantAgent](js-apis-wantAgent.md) | 是 | 通知参数,用于指定长时任务通知点击跳转的界面。 |
**返回值** **返回值**
| 类型 | 说明 | | 类型 | 说明 |
| -------------- | ---------------- | | -------------- | ---------------- |
| Promise\<void> | 使用Promise形式返回结果。 | | Promise\<void> | 使用Promise形式返回结果。 |
...@@ -321,6 +336,7 @@ stopBackgroundRunning(context: Context, callback: AsyncCallback&lt;void&gt;): vo ...@@ -321,6 +336,7 @@ stopBackgroundRunning(context: Context, callback: AsyncCallback&lt;void&gt;): vo
**系统能力:** SystemCapability.ResourceSchedule.BackgroundTaskManager.ContinuousTask **系统能力:** SystemCapability.ResourceSchedule.BackgroundTaskManager.ContinuousTask
**参数** **参数**
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| -------- | ------------------------- | ---- | ---------------------------------------- | | -------- | ------------------------- | ---- | ---------------------------------------- |
| context | Context | 是 | 应用运行的上下文。<br>FA模型的应用Context定义见[Context](js-apis-Context.md)<br>Stage模型的应用Context定义见[Context](js-apis-ability-context.md)。 | | context | Context | 是 | 应用运行的上下文。<br>FA模型的应用Context定义见[Context](js-apis-Context.md)<br>Stage模型的应用Context定义见[Context](js-apis-ability-context.md)。 |
...@@ -376,11 +392,13 @@ stopBackgroundRunning(context: Context): Promise&lt;void&gt; ...@@ -376,11 +392,13 @@ stopBackgroundRunning(context: Context): Promise&lt;void&gt;
**系统能力:** SystemCapability.ResourceSchedule.BackgroundTaskManager.ContinuousTask **系统能力:** SystemCapability.ResourceSchedule.BackgroundTaskManager.ContinuousTask
**参数** **参数**
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| ------- | ------- | ---- | ---------------------------------------- | | ------- | ------- | ---- | ---------------------------------------- |
| context | Context | 是 | 应用运行的上下文。<br>FA模型的应用Context定义见[Context](js-apis-Context.md)<br>Stage模型的应用Context定义见[Context](js-apis-ability-context.md)。 | | context | Context | 是 | 应用运行的上下文。<br>FA模型的应用Context定义见[Context](js-apis-Context.md)<br>Stage模型的应用Context定义见[Context](js-apis-ability-context.md)。 |
**返回值** **返回值**
| 类型 | 说明 | | 类型 | 说明 |
| -------------- | ---------------- | | -------------- | ---------------- |
| Promise\<void> | 使用Promise形式返回结果。 | | Promise\<void> | 使用Promise形式返回结果。 |
...@@ -418,68 +436,6 @@ export default class MainAbility extends Ability { ...@@ -418,68 +436,6 @@ export default class MainAbility extends Ability {
}; };
``` ```
## backgroundTaskManager.applyEfficiencyResources<sup>9+</sup>
applyEfficiencyResources(request: [EfficiencyResourcesRequest](#efficiencyresourcesrequest9)): boolean
向系统申请或释放能效资源,使用boolean形式返回结果。
通过EfficiencyResourcesRequest参数中的isApply变量,设置是申请还是释放。
应用使用此接口,需要向应用中心申请获得相应特权。
进程和它所属的应用可以同时申请某一类资源,例如CPU资源,但是应用释放资源的时候会将进程的资源一起释放。
**系统能力**: SystemCapability.ResourceSchedule.BackgroundTaskManager.EfficiencyResourcesApply
**系统API**: 此接口为系统接口。
**参数**
| 参数名 | 类型 | 必填 | 说明 |
| ------- | ------- | ---- | ---------------------------------------- |
| request | [EfficiencyResourcesRequest](#efficiencyresourcesrequest9) | 是 | 请求的必要信息。包括资源类型,超时时间等信息。详见[EfficiencyResourcesRequest](#efficiencyresourcesrequest9)。 |
**返回值**
| 类型 | 说明 |
| -------------- | ---------------- |
| boolean | true代表申请成功,false代表申请失败。 |
**示例**
```js
import backgroundTaskManager from '@ohos.backgroundTaskManager';
let request = {
resourceTypes: backgroundTaskManager.ResourceType.CPU,
// 如果将isApply置为false,则表示释放资源
isApply: true,
timeOut: 0,
reason: "apply",
isPersist: true,
isProcess: false,
};
let res = backgroundTaskManager.applyEfficiencyResources(request);
console.info("result of applyEfficiencyResources is: " + res)
```
## backgroundTaskManager.resetAllEfficiencyResources<sup>9+</sup>
resetAllEfficiencyResources(): void
释放所有已经申请的资源。
应用使用此接口,需要向应用中心申请获得相应特权。
**系统能力:** SystemCapability.ResourceSchedule.BackgroundTaskManager.EfficiencyResourcesApply
**系统API**: 此接口为系统接口。
**示例**
```js
import backgroundTaskManager from '@ohos.backgroundTaskManager';
backgroundTaskManager.resetAllEfficiencyResources();
```
## DelaySuspendInfo ## DelaySuspendInfo
延迟挂起信息。 延迟挂起信息。
...@@ -507,38 +463,3 @@ backgroundTaskManager.resetAllEfficiencyResources(); ...@@ -507,38 +463,3 @@ backgroundTaskManager.resetAllEfficiencyResources();
| WIFI_INTERACTION | 7 | WLAN相关<br />此接口为系统接口。 | | WIFI_INTERACTION | 7 | WLAN相关<br />此接口为系统接口。 |
| VOIP | 8 | 音视频通话<br />此接口为系统接口。 | | VOIP | 8 | 音视频通话<br />此接口为系统接口。 |
| TASK_KEEPING | 9 | 计算任务(仅在特定设备生效)。 | | TASK_KEEPING | 9 | 计算任务(仅在特定设备生效)。 |
\ No newline at end of file
## EfficiencyResourcesRequest<sup>9+</sup>
能效资源申请参数。
**系统能力:** SystemCapability.ResourceSchedule.BackgroundTaskManager.EfficiencyResourcesApply
**系统API**: 此接口为系统接口。
| 参数名 | 类型 | 必填 | 说明 |
| --------------- | ------ | ---- | ---------------------------------------- |
| resourceTypes | number | 是 | 申请的资源类型。 |
| isApply | boolean | 是 | 申请资源或者是释放资源。 |
| timeOut | number | 是 | 资源的使用时间,以毫秒为单位。 |
| isPersist | boolean | 否 | 是否永久持有资源,如果是true,那么timeOut就无效。 |
| isProcess | boolean | 否 | 应用申请或者是进程申请。 |
| reason | string | 是 | 申请资源的原因。 |
## ResourceType<sup>9+</sup>
能效资源类型。
**系统能力:** SystemCapability.ResourceSchedule.BackgroundTaskManager.EfficiencyResourcesApply
**系统API**: 此接口为系统接口。
| 参数名 | 参数值 | 描述 |
| ----------------------- | ---- | --------------------- |
| CPU | 1 | CPU资源,申请后不被挂起。 |
| COMMON_EVENT | 2 | 公共事件,申请后挂起状态下不被代理掉。 |
| TIMER | 4 | 计时器,申请后挂起状态下不被代理掉。 |
| WORK_SCHEDULER | 8 | 延迟任务,申请后有更长的执行时间。 |
| BLUETOOTH | 16 | 蓝牙相关,申请后挂起状态下不被代理掉。 |
| GPS | 32 | GPS相关,申请后挂起状态下不被代理掉。 |
| AUDIO | 64 | 音频资源,申请后挂起状态下不被代理掉。 |
\ No newline at end of file
...@@ -8,17 +8,17 @@ ...@@ -8,17 +8,17 @@
> >
> - 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 > - 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
> - 本模块接口仅可在Stage模型下使用。 > - 本模块接口仅可在Stage模型下使用。
> - 延迟任务调度约束见[延迟任务调度概述](../../task-management/work-scheduler-overview.md)。 > - 延迟任务调度约束见[延迟任务调度约束](../../task-management/background-task-overview.md#延迟任务调度约束)。
## 导入模块 ## 导入模块
```js ```js
import workScheduler from '@ohos.workScheduler'; import workScheduler from '@ohos.resourceschedule.workScheduler';
``` ```
## workScheduler.startWork ## workScheduler.startWork
startWork(work: WorkInfo): boolean startWork(work: WorkInfo): void
通知WorkSchedulerService将工作添加到执行队列。 通知WorkSchedulerService将工作添加到执行队列。
...@@ -30,11 +30,18 @@ startWork(work: WorkInfo): boolean ...@@ -30,11 +30,18 @@ startWork(work: WorkInfo): boolean
| ---- | --------------------- | ---- | -------------- | | ---- | --------------------- | ---- | -------------- |
| work | [WorkInfo](#workinfo) | 是 | 指示要添加到执行队列的工作。 | | work | [WorkInfo](#workinfo) | 是 | 指示要添加到执行队列的工作。 |
**返回值** **错误码**
以下错误码的详细介绍请参见[@ohos.resourceschedule.workScheduler (延迟任务调度)](../errorcodes/errorcode-workScheduler.md)错误码。
| 错误码ID | 错误码信息 |
| ---- | --------------------- |
| 9700001 | Memory operation failed. |
| 9700002 | Parcel operation failed. |
| 9700003 | System service operation failed. |
| 9700004 | Check workInfo failed. |
| 9700005 | StartWork failed. |
| 类型 | 说明 |
| ------- | -------------------------------- |
| boolean | 如果工作成功添加到执行队列,则返回true,否则返回false。 |
**示例** **示例**
...@@ -53,12 +60,16 @@ startWork(work: WorkInfo): boolean ...@@ -53,12 +60,16 @@ startWork(work: WorkInfo): boolean
mykey3: 1.5 mykey3: 1.5
} }
} }
let res = workScheduler.startWork(workInfo); try{
console.info(`workschedulerLog res: ${res}`); workScheduler.startWork(workInfo);
console.info('workschedulerLog startWork success');
} catch (error) {
console.error(`workschedulerLog startwork failed. code is ${error.code} message is ${error.message}`);
}
``` ```
## workScheduler.stopWork ## workScheduler.stopWork
stopWork(work: WorkInfo, needCancel?: boolean): boolean stopWork(work: WorkInfo, needCancel?: boolean): void
通知WorkSchedulerService停止指定工作。 通知WorkSchedulerService停止指定工作。
...@@ -71,11 +82,16 @@ stopWork(work: WorkInfo, needCancel?: boolean): boolean ...@@ -71,11 +82,16 @@ stopWork(work: WorkInfo, needCancel?: boolean): boolean
| work | [WorkInfo](#workinfo) | 是 | 指示要停止的工作。 | | work | [WorkInfo](#workinfo) | 是 | 指示要停止的工作。 |
| needCancel | boolean | 是 | 是否需要取消的工作。 | | needCancel | boolean | 是 | 是否需要取消的工作。 |
**返回值** **错误码**
| 类型 | 说明 | 以下错误码的详细介绍请参见[@ohos.resourceschedule.workScheduler (延迟任务调度)](../errorcodes/errorcode-workScheduler.md)错误码。
| ------- | ----------------------- |
| boolean | 如果成功,则返回true,否则返回false。 | | 错误码ID | 错误码信息 |
| ---- | --------------------- |
| 9700001 | Memory operation failed. |
| 9700002 | Parcel operation failed. |
| 9700003 | System service operation failed. |
| 9700004 | Check workInfo failed. |
**示例** **示例**
...@@ -94,11 +110,15 @@ stopWork(work: WorkInfo, needCancel?: boolean): boolean ...@@ -94,11 +110,15 @@ stopWork(work: WorkInfo, needCancel?: boolean): boolean
mykey3: 1.5 mykey3: 1.5
} }
} }
let res = workScheduler.stopWork(workInfo, false); try{
console.info(`workschedulerLog res: ${res}`); workScheduler.stopWork(workInfo, false);
console.info('workschedulerLog stopWork success');
} catch (error) {
console.error(`workschedulerLog stopWork failed. code is ${error.code} message is ${error.message}`);
}
``` ```
## workScheduler.getWorkStatus ## workScheduler.getWorkStatus:callback
getWorkStatus(workId: number, callback : AsyncCallback\<WorkInfo>): void getWorkStatus(workId: number, callback : AsyncCallback\<WorkInfo>): void
获取工作的最新状态,使用Callback形式返回。 获取工作的最新状态,使用Callback形式返回。
...@@ -112,21 +132,36 @@ getWorkStatus(workId: number, callback : AsyncCallback\<WorkInfo>): void ...@@ -112,21 +132,36 @@ getWorkStatus(workId: number, callback : AsyncCallback\<WorkInfo>): void
| workId | number | 是 | work的id。 | | workId | number | 是 | work的id。 |
| callback | AsyncCallback\<[WorkInfo](#workinfo)> | 是 | 指定的callback回调方法。如果指定的工作Id有效,则返回从WorkSchedulerService获取的有效工作状态;否则返回null。 | | callback | AsyncCallback\<[WorkInfo](#workinfo)> | 是 | 指定的callback回调方法。如果指定的工作Id有效,则返回从WorkSchedulerService获取的有效工作状态;否则返回null。 |
**错误码**
以下错误码的详细介绍请参见[@ohos.resourceschedule.workScheduler (延迟任务调度)](../errorcodes/errorcode-workScheduler.md)错误码。
| 错误码ID | 错误码信息 |
| ---- | --------------------- |
| 9700001 | Memory operation failed. |
| 9700002 | Parcel operation failed. |
| 9700003 | System service operation failed. |
| 9700004 | Check workInfo failed. |
**示例** **示例**
```js ```js
workScheduler.getWorkStatus(50, (err, res) => { try{
if (err) { workScheduler.getWorkStatus(50, (error, res) => {
console.info(`workschedulerLog getWorkStatus failed, because: ${err.code}`); if (error) {
console.error(`workschedulerLog getWorkStatus failed. code is ${error.code} message is ${error.message}`);
} else { } else {
for (let item in res) { for (let item in res) {
console.info(`workschedulerLog getWorkStatus success, ${item} is: ${res[item]}`); console.info(`workschedulerLog getWorkStatus success, ${item} is: ${res[item]}`);
} }
} }
}); });
} catch (error) {
console.error(`workschedulerLog getWorkStatus failed. code is ${error.code} message is ${error.message}`);
}
``` ```
## workScheduler.getWorkStatus ## workScheduler.getWorkStatus:promise
getWorkStatus(workId: number): Promise\<WorkInfo> getWorkStatus(workId: number): Promise\<WorkInfo>
获取工作的最新状态,使用Promise形式返回。 获取工作的最新状态,使用Promise形式返回。
...@@ -145,19 +180,34 @@ getWorkStatus(workId: number): Promise\<WorkInfo> ...@@ -145,19 +180,34 @@ getWorkStatus(workId: number): Promise\<WorkInfo>
| ------------------------------- | ---------------------------------------- | | ------------------------------- | ---------------------------------------- |
| Promise\<[WorkInfo](#workinfo)> | 指定的Promise回调方法。如果指定的工作ID有效,则返回从WorkSchedulerService获取的有效工作状态;否则返回null。 | | Promise\<[WorkInfo](#workinfo)> | 指定的Promise回调方法。如果指定的工作ID有效,则返回从WorkSchedulerService获取的有效工作状态;否则返回null。 |
**错误码**
以下错误码的详细介绍请参见[@ohos.resourceschedule.workScheduler (延迟任务调度)](../errorcodes/errorcode-workScheduler.md)错误码。
| 错误码ID | 错误码信息 |
| ---- | --------------------- |
| 9700001 | Memory operation failed. |
| 9700002 | Parcel operation failed. |
| 9700003 | System service operation failed. |
| 9700004 | Check workInfo failed. |
**示例** **示例**
```js ```js
try{
workScheduler.getWorkStatus(50).then((res) => { workScheduler.getWorkStatus(50).then((res) => {
for (let item in res) { for (let item in res) {
console.info(`workschedulerLog getWorkStatus success, ${item} is: ${res[item]}`); console.info(`workschedulerLog getWorkStatus success, ${item} is: ${res[item]}`);
} }
}).catch((err) => { }).catch((error) => {
console.info(`workschedulerLog getWorkStatus failed, because: ${err.code}`); console.error(`workschedulerLog getWorkStatus failed. code is ${error.code} message is ${error.message}`);
}) })
} catch (error) {
console.error(`workschedulerLog getWorkStatus failed. code is ${error.code} message is ${error.message}`);
}
``` ```
## workScheduler.obtainAllWorks ## workScheduler.obtainAllWorks:callback
obtainAllWorks(callback : AsyncCallback\<void>): Array\<WorkInfo> obtainAllWorks(callback : AsyncCallback\<void>): Array\<WorkInfo>
获取与当前应用程序关联的所有工作,使用Callback形式返回。 获取与当前应用程序关联的所有工作,使用Callback形式返回。
...@@ -176,19 +226,33 @@ obtainAllWorks(callback : AsyncCallback\<void>): Array\<WorkInfo> ...@@ -176,19 +226,33 @@ obtainAllWorks(callback : AsyncCallback\<void>): Array\<WorkInfo>
| ----------------------------- | --------------- | | ----------------------------- | --------------- |
| Array\<[WorkInfo](#workinfo)> | 返回与应用程序关联的所有工作。 | | Array\<[WorkInfo](#workinfo)> | 返回与应用程序关联的所有工作。 |
**错误码**
以下错误码的详细介绍请参见[@ohos.resourceschedule.workScheduler (延迟任务调度)](../errorcodes/errorcode-workScheduler.md)错误码。
| 错误码ID | 错误码信息 |
| ---- | --------------------- |
| 9700001 | Memory operation failed. |
| 9700002 | Parcel operation failed. |
| 9700003 | System service operation failed. |
**示例** **示例**
```js ```js
workScheduler.obtainAllWorks((err, res) =>{ try{
if (err) { workScheduler.obtainAllWorks((error, res) =>{
console.info(`workschedulerLog obtainAllWorks failed, because: ${err.code}`); if (error) {
console.error(`workschedulerLog obtainAllWorks failed. code is ${error.code} message is ${error.message}`);
} else { } else {
console.info(`workschedulerLog obtainAllWorks success, data is: ${JSON.stringify(res)}`); console.info(`workschedulerLog obtainAllWorks success, data is: ${JSON.stringify(res)}`);
} }
}); });
} catch (error) {
console.error(`workschedulerLog obtainAllWorks failed. code is ${error.code} message is ${error.message}`);
}
``` ```
## workScheduler.obtainAllWorks ## workScheduler.obtainAllWorks:promise
obtainAllWorks(): Promise<Array\<WorkInfo>> obtainAllWorks(): Promise<Array\<WorkInfo>>
获取与当前应用程序关联的所有工作,使用Promise形式返回。 获取与当前应用程序关联的所有工作,使用Promise形式返回。
...@@ -201,31 +265,59 @@ obtainAllWorks(): Promise<Array\<WorkInfo>> ...@@ -201,31 +265,59 @@ obtainAllWorks(): Promise<Array\<WorkInfo>>
| -------------------------------------- | ------------------------------ | | -------------------------------------- | ------------------------------ |
| Promise<Array\<[WorkInfo](#workinfo)>> | 指定的Promise回调方法。返回与应用程序关联的所有工作。 | | Promise<Array\<[WorkInfo](#workinfo)>> | 指定的Promise回调方法。返回与应用程序关联的所有工作。 |
**错误码**
以下错误码的详细介绍请参见[@ohos.resourceschedule.workScheduler (延迟任务调度)](../errorcodes/errorcode-workScheduler.md)错误码。
| 错误码ID | 错误码信息 |
| ---- | --------------------- |
| 9700001 | Memory operation failed. |
| 9700002 | Parcel operation failed. |
| 9700003 | System service operation failed. |
**示例** **示例**
```js ```js
try{
workScheduler.obtainAllWorks().then((res) => { workScheduler.obtainAllWorks().then((res) => {
console.info(`workschedulerLog obtainAllWorks success, data is: ${JSON.stringify(res)}`); console.info(`workschedulerLog obtainAllWorks success, data is: ${JSON.stringify(res)}`);
}).catch((err) => { }).catch((error) => {
console.info(`workschedulerLog obtainAllWorks failed, because: ${err.code}`); console.error(`workschedulerLog obtainAllWorks failed. code is ${error.code} message is ${error.message}`);
}) })
} catch (error) {
console.error(`workschedulerLog obtainAllWorks failed. code is ${error.code} message is ${error.message}`);
}
``` ```
## workScheduler.stopAndClearWorks ## workScheduler.stopAndClearWorks
stopAndClearWorks(): boolean stopAndClearWorks(): void
停止和取消与当前应用程序关联的所有工作。 停止和取消与当前应用程序关联的所有工作。
**系统能力**:SystemCapability.ResourceSchedule.WorkScheduler **系统能力**:SystemCapability.ResourceSchedule.WorkScheduler
**错误码**
以下错误码的详细介绍请参见[@ohos.resourceschedule.workScheduler (延迟任务调度)](../errorcodes/errorcode-workScheduler.md)错误码。
| 错误码ID | 错误码信息 |
| ---- | --------------------- |
| 9700001 | Memory operation failed. |
| 9700002 | Parcel operation failed. |
| 9700003 | System service operation failed. |
**示例** **示例**
```js ```js
let res = workScheduler.stopAndClearWorks(); try{
console.info(`workschedulerLog res: ${res}`); workScheduler.stopAndClearWorks();
console.info(`workschedulerLog stopAndClearWorks success`);
} catch (error) {
console.error(`workschedulerLog stopAndClearWorks failed. code is ${error.code} message is ${error.message}`);
}
``` ```
## workScheduler.isLastWorkTimeOut ## workScheduler.isLastWorkTimeOut:callback
isLastWorkTimeOut(workId: number, callback : AsyncCallback\<void>): boolean isLastWorkTimeOut(workId: number, callback : AsyncCallback\<void>): boolean
检查指定工作的最后一次执行是否为超时操作,使用Callback形式返回。 检查指定工作的最后一次执行是否为超时操作,使用Callback形式返回。
...@@ -245,19 +337,33 @@ isLastWorkTimeOut(workId: number, callback : AsyncCallback\<void>): boolean ...@@ -245,19 +337,33 @@ isLastWorkTimeOut(workId: number, callback : AsyncCallback\<void>): boolean
| ------- | ---------------------------------------- | | ------- | ---------------------------------------- |
| boolean | 指定的callback回调方法。如果指定工作的最后一次执行是超时操作,则返回true;否则返回false。 | | boolean | 指定的callback回调方法。如果指定工作的最后一次执行是超时操作,则返回true;否则返回false。 |
**错误码**
以下错误码的详细介绍请参见[@ohos.resourceschedule.workScheduler (延迟任务调度)](../errorcodes/errorcode-workScheduler.md)错误码。
| 错误码ID | 错误码信息 |
| ---- | --------------------- |
| 9700001 | Memory operation failed. |
| 9700002 | Parcel operation failed. |
| 9700003 | System service operation failed. |
**示例** **示例**
```js ```js
workScheduler.isLastWorkTimeOut(500, (err, res) =>{ try{
if (err) { workScheduler.isLastWorkTimeOut(500, (error, res) =>{
console.info(`workschedulerLog isLastWorkTimeOut failed, because: ${err.code}`); if (error) {
onsole.error(`workschedulerLog isLastWorkTimeOut failed. code is ${error.code} message is ${error.message}`);
} else { } else {
console.info(`workschedulerLog isLastWorkTimeOut success, data is: ${res}`); console.info(`workschedulerLog isLastWorkTimeOut success, data is: ${res}`);
} }
}); });
} catch (error) {
console.error(`workschedulerLog isLastWorkTimeOut failed. code is ${error.code} message is ${error.message}`);
}
``` ```
## workScheduler.isLastWorkTimeOut ## workScheduler.isLastWorkTimeOut:promise
isLastWorkTimeOut(workId: number): Promise\<boolean> isLastWorkTimeOut(workId: number): Promise\<boolean>
检查指定工作的最后一次执行是否为超时操作,使用Promise形式返回。 检查指定工作的最后一次执行是否为超时操作,使用Promise形式返回。
...@@ -276,20 +382,34 @@ isLastWorkTimeOut(workId: number): Promise\<boolean> ...@@ -276,20 +382,34 @@ isLastWorkTimeOut(workId: number): Promise\<boolean>
| ----------------- | ---------------------------------------- | | ----------------- | ---------------------------------------- |
| Promise\<boolean> | 指定的Promise回调方法。如果指定工作的最后一次执行是超时操作,则返回true;否则返回false。 | | Promise\<boolean> | 指定的Promise回调方法。如果指定工作的最后一次执行是超时操作,则返回true;否则返回false。 |
**错误码**
以下错误码的详细介绍请参见[@ohos.resourceschedule.workScheduler (延迟任务调度)](../errorcodes/errorcode-workScheduler.md)错误码。
| 错误码ID | 错误码信息 |
| ---- | --------------------- |
| 9700001 | Memory operation failed. |
| 9700002 | Parcel operation failed. |
| 9700003 | System service operation failed. |
**示例** **示例**
```js ```js
try{
workScheduler.isLastWorkTimeOut(500) workScheduler.isLastWorkTimeOut(500)
.then(res => { .then(res => {
console.info(`workschedulerLog isLastWorkTimeOut success, data is: ${res}`); console.info(`workschedulerLog isLastWorkTimeOut success, data is: ${res}`);
}) })
.catch(err => { .catch(error => {
console.info(`workschedulerLog isLastWorkTimeOut failed, because: ${err.code}`); console.error(`workschedulerLog isLastWorkTimeOut failed. code is ${error.code} message is ${error.message}`);
}); });
} catch (error) {
console.error(`workschedulerLog isLastWorkTimeOut failed. code is ${error.code} message is ${error.message}`);
}
``` ```
## WorkInfo ## WorkInfo
提供工作的具体信息。WorkInfo设置参数约束见[延迟任务调度概述](../../task-management/work-scheduler-overview.md) 提供工作的具体信息。WorkInfo设置参数约束见[延迟任务调度概述](../../task-management/background-task-overview.md#延迟任务调度约束)
**系统能力**:SystemCapability.ResourceSchedule.WorkScheduler **系统能力**:SystemCapability.ResourceSchedule.WorkScheduler
......
# backgroundTaskManager错误码
## 9800001 内存操作失败
**错误信息**
Memory operation failed.
**可能原因**
1. 系统内存泄漏。
2. 系统内存不足。
**处理步骤**
1. 内存不足,请释放内存。
2. 请检查是否内存泄漏。
## 9800002 Parcel读写操作失败
**错误信息**
Parcel operation failed.
**可能原因**
调用MessageParcel对象读取或写入对象异常。
**处理步骤**
系统内部工作异常,请稍候重试,或者重启设备尝试。
## 9800003 IPC通信失败
**错误信息**
Inner transact failed.
**可能原因**
IPC通信失败。
**处理步骤**
系统内部工作异常,请稍候重试,或者重启设备尝试。
## 9800004 系统服务失败
**错误信息**
System service operation failed.
**可能原因**
1. 系统服务还未启动。
2. 系统服务异常。
**处理步骤**
系统服务内部工作异常,请稍候重试,或者重启设备尝试。
## 9800005 长时任务校验失败
**错误信息**
Background task verification failed.
**可能原因**
1. 应用重复申请长时任务。
2. 应用重复取消长时任务。
3. bgMode无效,应用配置文件属性backgroundModes没有配置任何长时任务类型。
4. 只有PC设备才能申请长时任务KEEPING_TASK。
5. 只有系统应用才能申请长时任务WIFI_INTERACTION或VOIP。
**处理步骤**
1. 请检查应用代码。
2. 请检查应用是否拥有系统权限。
3. 请检查应用所在设备类型。
4. 请检查应用配置属性backgroundModes。
## 9800006 长时任务通知信息校验失败
**错误信息**
Notification verification failed.
**可能原因**
1. 缓存在资源子系统的长时任务通知信息资源加载失败。
2. 通知子系统服务异常。
**处理步骤**
1. 请检查系统长时任务资源"ohos.backgroundtaskmgr.resources"是否存在。
2. 系统服务内部工作异常,请稍候重试,或者重启设备尝试。
## 9800007 长时任务信息存储失败
**错误信息**
Task storage failed.
**可能原因**
1. 创建存储任务文件失败。
2. 获取真实文件路径失败。
3. 打开存储任务文件失败。
**处理步骤**
1. 请检查文件/data/service/el1/public/background_task_mgr/running_task。
2. 系统内部工作异常,请稍候重试,或者重启设备尝试。
## 9900001 短时任务调用方信息校验失败
**错误信息**
Caller information verification failed.
**可能原因**
1. 获取调用方的uid或pid错误。
2. 获取调用方的bundleName错误。
3. 取消短时任务时传入的requestId无效,在申请短时任务的列表中找不到对应的requestId。
**处理步骤**
1. 请检查应用uid是否存在。
2. 请检查应用是否申请了短时任务。
3. 系统服务内部工作异常,请稍候重试,或者重启设备尝试。
## 9900002 短时任务校验失败
**错误信息**
Background task verification failed.
**可能原因**
1. requestSuspendDelay()方法传递的callback对象已存在。
2. cancelSuspendDelay()方法传递的callback对象不存在。
3. 应用退入后台后5s内允许申请短时任务。
4. 应用申请短时任务数量不能超过3个。
5. 应用申请短时任务每日剩余配额不足。
**处理步骤**
1. 请检查应用自身代码逻辑。
2. 应用运行短时任务完毕及时释放。
## 18700001 资源申请接口信息校验失败
**错误信息**
Caller information verification failed.
**可能原因**
1. 获取调用方的uid或pid错误。
2. 申请资源的resourceTypes超过上限。
**处理步骤**
请检查输入的参数。
\ No newline at end of file
# workScheduler错误码
## 9700001 内存操作失败
**错误信息**
Memory operation failed.
**可能原因**
1. 系统内存泄漏。
2. 系统内存不足。
**处理步骤**
1. 内存不足,请释放内存。
2. 请检查是否内存泄漏。
## 9700002 Parcel读写操作失败
**错误信息**
Parcel operation failed.
**可能原因**
调用MessageParcel对象读取或写入对象异常。
**处理步骤**
系统内部工作异常,请稍候重试,或者重启设备尝试。
## 9700003 系统服务失败
**错误信息**
System service operation failed.
**可能原因**
1. 系统服务还未启动。
2. 系统服务异常。
**处理步骤**
系统服务内部工作异常,请稍候重试,或者重启设备尝试。
## 9700004 workInfo校验失败
**错误信息**
Check workInfo failed.
**可能原因**
1. workInfo中的bundleName和应用的uid不匹配。
2. 取消或查询延迟任务时,延迟任务不存在。
**处理步骤**
请检查workInfo参数。
## 9700005 StartWork失败
**错误信息**
StartWork failed.
**可能原因**
1. 延迟任务已存在。
2. 每个应用uid最多添加10个延迟任务。
3. 重复任务设置的重复时间应至少为20分钟。
**处理步骤**
请检查输入的参数和代码逻辑。
## 长时任务 # 长时任务
### 场景说明 ## 场景说明
如果应用需要在后台长时间执行用户可感知的任务,如后台播放音乐、导航、设备连接、VoIP等,则使用长时任务避免进入挂起(Suspend)状态。 如果应用需要在后台长时间执行用户可感知的任务,如后台播放音乐、导航、设备连接、VoIP等,则使用长时任务避免进入挂起(Suspend)状态。
长时任务在后台执行没有时间限制。为了避免该机制被滥用,系统只允许申请有限个数的长时任务类型,同时会有相应的通知提示与长时任务相关联,使用户可感知,并且系统会添加相应的校验机制,确保应用是的确在执行相应的长时任务。 长时任务在后台执行没有时间限制。为了避免该机制被滥用,系统只允许申请有限个数的长时任务类型,同时会有相应的通知提示与长时任务相关联,使用户可感知,并且系统会添加相应的校验机制,确保应用是的确在执行相应的长时任务。
### 权限 ## 接口说明
ohos.permission.KEEP_BACKGROUND_RUNNING **表1** 长时任务主要接口
### 接口说明
**表2** 长时任务主要接口
| 接口名 | 描述 | | 接口名 | 描述 |
| ---------------------------------------- | ---------------------------- | | ---------------------------------------- | ---------------------------- |
...@@ -21,7 +17,7 @@ ohos.permission.KEEP_BACKGROUND_RUNNING ...@@ -21,7 +17,7 @@ ohos.permission.KEEP_BACKGROUND_RUNNING
其中,wantAgent的信息详见([WantAgent](../reference/apis/js-apis-wantAgent.md) 其中,wantAgent的信息详见([WantAgent](../reference/apis/js-apis-wantAgent.md)
**表3** 后台模式类型 **表2** 后台模式类型
| 参数名 | id值 | 描述 | 配置项 | | 参数名 | id值 | 描述 | 配置项 |
| ----------------------- | ---- | -------------- | --------------------- | | ----------------------- | ---- | -------------- | --------------------- |
...@@ -36,9 +32,9 @@ ohos.permission.KEEP_BACKGROUND_RUNNING ...@@ -36,9 +32,9 @@ ohos.permission.KEEP_BACKGROUND_RUNNING
| TASK_KEEPING | 9 | 计算任务(仅供特定设备使用) | taskKeeping | | TASK_KEEPING | 9 | 计算任务(仅供特定设备使用) | taskKeeping |
### 开发步骤 ## 开发步骤
基于FA模型: ### 基于FA模型
基于FA的Service Ability使用,参考[ServiceAbility开发指导](../ability/fa-serviceability.md) 基于FA的Service Ability使用,参考[ServiceAbility开发指导](../ability/fa-serviceability.md)
...@@ -46,7 +42,7 @@ ohos.permission.KEEP_BACKGROUND_RUNNING ...@@ -46,7 +42,7 @@ ohos.permission.KEEP_BACKGROUND_RUNNING
当需要与后台执行的长时任务交互时(如播放音乐等)。可以采用connectAbility()方法启动并连接Service Ability。在获取到服务的代理对象后,与服务进行通信,控制长时任务的申请和取消。 当需要与后台执行的长时任务交互时(如播放音乐等)。可以采用connectAbility()方法启动并连接Service Ability。在获取到服务的代理对象后,与服务进行通信,控制长时任务的申请和取消。
1、新建Api Version 8的工程后,在工程目录中右键选择“new” -> “Ability” -> “Service Ability” 快速创建Service Ability组件。并在config.json文件中配置长时任务权限、后台模式类型,其中Ability类型为“service”。 1、新建Api Version 8的工程后,在工程目录中右键选择“new” -> “Ability” -> “Service Ability” 快速创建Service Ability组件。并在config.json文件中配置长时任务权限ohos.permission.KEEP_BACKGROUND_RUNNING、后台模式类型,其中Ability类型为“service”。
``` ```
"module": { "module": {
...@@ -71,7 +67,7 @@ ohos.permission.KEEP_BACKGROUND_RUNNING ...@@ -71,7 +67,7 @@ ohos.permission.KEEP_BACKGROUND_RUNNING
2、在Service Ability调用长时任务的申请和取消接口。 2、在Service Ability调用长时任务的申请和取消接口。
```js ```js
import backgroundTaskManager from '@ohos.backgroundTaskManager'; import backgroundTaskManager from '@ohos.resourceschedule.backgroundTaskManager';
import featureAbility from '@ohos.ability.featureAbility'; import featureAbility from '@ohos.ability.featureAbility';
import wantAgent from '@ohos.wantAgent'; import wantAgent from '@ohos.wantAgent';
import rpc from "@ohos.rpc"; import rpc from "@ohos.rpc";
...@@ -95,21 +91,29 @@ function startContinuousTask() { ...@@ -95,21 +91,29 @@ function startContinuousTask() {
// 通过wantAgent模块的getWantAgent方法获取WantAgent对象 // 通过wantAgent模块的getWantAgent方法获取WantAgent对象
wantAgent.getWantAgent(wantAgentInfo).then((wantAgentObj) => { wantAgent.getWantAgent(wantAgentInfo).then((wantAgentObj) => {
try {
backgroundTaskManager.startBackgroundRunning(featureAbility.getContext(), backgroundTaskManager.startBackgroundRunning(featureAbility.getContext(),
backgroundTaskManager.BackgroundMode.DATA_TRANSFER, wantAgentObj).then(() => { backgroundTaskManager.BackgroundMode.DATA_TRANSFER, wantAgentObj).then(() => {
console.info("Operation startBackgroundRunning succeeded"); console.info("Operation startBackgroundRunning succeeded");
}).catch((err) => { }).catch((err) => {
console.error("Operation startBackgroundRunning failed Cause: " + err); console.error("Operation startBackgroundRunning failed Cause: " + err);
}); });
} catch (error) {
console.error(`Operation startBackgroundRunning failed. code is ${error.code} message is ${error.message}`);
}
}); });
} }
function stopContinuousTask() { function stopContinuousTask() {
try {
backgroundTaskManager.stopBackgroundRunning(featureAbility.getContext()).then(() => { backgroundTaskManager.stopBackgroundRunning(featureAbility.getContext()).then(() => {
console.info("Operation stopBackgroundRunning succeeded"); console.info("Operation stopBackgroundRunning succeeded");
}).catch((err) => { }).catch((err) => {
console.error("Operation stopBackgroundRunning failed Cause: " + err); console.error("Operation stopBackgroundRunning failed Cause: " + err);
}); });
} catch (error) {
console.error(`Operation stopBackgroundRunning failed. code is ${error.code} message is ${error.message}`);
}
} }
async function processAsyncJobs() { async function processAsyncJobs() {
...@@ -173,11 +177,11 @@ export default { ...@@ -173,11 +177,11 @@ export default {
}; };
``` ```
基于Stage模型: ### 基于Stage模型
Stage模型的相关信息参考[Stage模型综述](../ability/stage-brief.md) Stage模型的相关信息参考[Stage模型综述](../ability/stage-brief.md)
1、新建Api Version 9的工程后,在工程目录中右键选择“New” -> “Ability” 快速创建Ability组件。并在module.json5文件中配置长时任务权限、后台模式类型。 1、新建Api Version 9的工程后,在工程目录中右键选择“New” -> “Ability” 快速创建Ability组件。并在module.json5文件中配置长时任务权限ohos.permission.KEEP_BACKGROUND_RUNNING、后台模式类型。
``` ```
"module": { "module": {
...@@ -201,7 +205,7 @@ Stage模型的相关信息参考[Stage模型综述](../ability/stage-brief.md) ...@@ -201,7 +205,7 @@ Stage模型的相关信息参考[Stage模型综述](../ability/stage-brief.md)
```ts ```ts
import wantAgent from '@ohos.wantAgent'; import wantAgent from '@ohos.wantAgent';
import backgroundTaskManager from '@ohos.backgroundTaskManager'; import backgroundTaskManager from '@ohos.resourceschedule.backgroundTaskManager';
@Entry @Entry
@Component @Component
...@@ -229,21 +233,29 @@ struct Index { ...@@ -229,21 +233,29 @@ struct Index {
// 通过wantAgent模块的getWantAgent方法获取WantAgent对象 // 通过wantAgent模块的getWantAgent方法获取WantAgent对象
wantAgent.getWantAgent(wantAgentInfo).then((wantAgentObj) => { wantAgent.getWantAgent(wantAgentInfo).then((wantAgentObj) => {
try {
backgroundTaskManager.startBackgroundRunning(this.context, backgroundTaskManager.startBackgroundRunning(this.context,
backgroundTaskManager.BackgroundMode.DATA_TRANSFER, wantAgentObj).then(() => { backgroundTaskManager.BackgroundMode.DATA_TRANSFER, wantAgentObj).then(() => {
console.info("Operation startBackgroundRunning succeeded"); console.info("Operation startBackgroundRunning succeeded");
}).catch((err) => { }).catch((err) => {
console.error("Operation startBackgroundRunning failed Cause: " + err); console.error("Operation startBackgroundRunning failed Cause: " + err);
}); });
} catch (error) {
console.error(`Operation startBackgroundRunning failed. code is ${error.code} message is ${error.message}`);
}
}); });
} }
stopContinuousTask() { stopContinuousTask() {
try {
backgroundTaskManager.stopBackgroundRunning(this.context).then(() => { backgroundTaskManager.stopBackgroundRunning(this.context).then(() => {
console.info("Operation stopBackgroundRunning succeeded"); console.info("Operation stopBackgroundRunning succeeded");
}).catch((err) => { }).catch((err) => {
console.error("Operation stopBackgroundRunning failed Cause: " + err); console.error("Operation stopBackgroundRunning failed Cause: " + err);
}); });
} catch (error) {
console.error(`Operation stopBackgroundRunning failed. code is ${error.code} message is ${error.message}`);
}
} }
build() { build() {
...@@ -282,7 +294,7 @@ struct Index { ...@@ -282,7 +294,7 @@ struct Index {
```ts ```ts
import Ability from '@ohos.application.Ability' import Ability from '@ohos.application.Ability'
import backgroundTaskManager from '@ohos.backgroundTaskManager'; import backgroundTaskManager from '@ohos.resourceschedule.backgroundTaskManager';
import wantAgent from '@ohos.wantAgent'; import wantAgent from '@ohos.wantAgent';
const MSG_SEND_METHOD: string = 'CallSendMsg' const MSG_SEND_METHOD: string = 'CallSendMsg'
...@@ -308,21 +320,29 @@ function startContinuousTask() { ...@@ -308,21 +320,29 @@ function startContinuousTask() {
// 通过wantAgent模块的getWantAgent方法获取WantAgent对象 // 通过wantAgent模块的getWantAgent方法获取WantAgent对象
wantAgent.getWantAgent(wantAgentInfo).then((wantAgentObj) => { wantAgent.getWantAgent(wantAgentInfo).then((wantAgentObj) => {
backgroundTaskManager.startBackgroundRunning(mContext, try {
backgroundTaskManager.startBackgroundRunning(featureAbility.getContext(),
backgroundTaskManager.BackgroundMode.DATA_TRANSFER, wantAgentObj).then(() => { backgroundTaskManager.BackgroundMode.DATA_TRANSFER, wantAgentObj).then(() => {
console.info("Operation startBackgroundRunning succeeded"); console.info("Operation startBackgroundRunning succeeded");
}).catch((err) => { }).catch((error) => {
console.error("Operation startBackgroundRunning failed Cause: " + err); console.error(`Operation startBackgroundRunning failed. code is ${error.code} message is ${error.message}`);
}); });
} catch (error) {
console.error(`Operation startBackgroundRunning failed. code is ${error.code} message is ${error.message}`);
}
}); });
} }
function stopContinuousTask() { function stopContinuousTask() {
backgroundTaskManager.stopBackgroundRunning(mContext).then(() => { try {
backgroundTaskManager.stopBackgroundRunning(featureAbility.getContext()).then(() => {
console.info("Operation stopBackgroundRunning succeeded"); console.info("Operation stopBackgroundRunning succeeded");
}).catch((err) => { }).catch((err) => {
console.error("Operation stopBackgroundRunning failed Cause: " + err); console.error(`Operation stopBackgroundRunning failed. code is ${error.code} message is ${error.message}`);
}); });
} catch (error) {
console.error(`Operation stopBackgroundRunning failed. code is ${error.code} message is ${error.message}`);
}
} }
class MySequenceable { class MySequenceable {
......
## 短时任务 # 短时任务
### 场景说明 ## 场景说明
当应用退到后台默认有6到12秒的运行时长,超过该时间后,系统会将应用置为挂起状态。对于绝大多数应用,6到12秒的时间,足够执行一些重要的任务,但如果应用需要更多的时间,可以通过短时任务接口,扩展应用的执行时间。 当应用退到后台默认有6到12秒的运行时长,超过该时间后,系统会将应用置为挂起状态。对于绝大多数应用,6到12秒的时间,足够执行一些重要的任务,但如果应用需要更多的时间,可以通过短时任务接口,扩展应用的执行时间。
建议不要等到应用退后台后,才调用requestSuspendDelay方法申请延迟挂起,而是应该在执行任何的耗时操作前,都应该调用该接口,向系统申明扩展应用的执行时间。 建议不要等到应用退后台后,才调用requestSuspendDelay方法申请延迟挂起,而是应该在执行任何的耗时操作前,都应该调用该接口,向系统申明扩展应用的执行时间。
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
一些典型的耗时任务有,需要保存一些状态数据到本地数据库,需要打开和处理一个大型文件,需要同步一些数据到应用的云端服务器等。 一些典型的耗时任务有,需要保存一些状态数据到本地数据库,需要打开和处理一个大型文件,需要同步一些数据到应用的云端服务器等。
### 接口说明 ## 接口说明
**表1** 短时任务主要接口 **表1** 短时任务主要接口
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
| cancelSuspendDelay(requestId:&nbsp;number):&nbsp;void | 取消延迟挂起。 | | cancelSuspendDelay(requestId:&nbsp;number):&nbsp;void | 取消延迟挂起。 |
### 开发步骤 ## 开发步骤
1、当应用需要开始执行一个耗时的任务时。调用短时任务申请接口,并且在任务执行完后,调用短时任务取消接口。 1、当应用需要开始执行一个耗时的任务时。调用短时任务申请接口,并且在任务执行完后,调用短时任务取消接口。
......
...@@ -4,49 +4,37 @@ ...@@ -4,49 +4,37 @@
应用要执行对实时性要求不高的任务或持久性任务的时候,比如设备空闲时候做一次数据学习等场景,可以使用延迟调度任务,该机制在满足应用设定条件的时候,会根据系统当前状态,如内存、功耗、温度等统一决策调度时间。延迟任务调度约束见[延迟任务调度约束](./background-task-overview.md#延迟任务调度约束) 应用要执行对实时性要求不高的任务或持久性任务的时候,比如设备空闲时候做一次数据学习等场景,可以使用延迟调度任务,该机制在满足应用设定条件的时候,会根据系统当前状态,如内存、功耗、温度等统一决策调度时间。延迟任务调度约束见[延迟任务调度约束](./background-task-overview.md#延迟任务调度约束)
## 接口说明 ## 接口说明
注册相关接口包导入:
```js
import workScheduler from '@ohos.workScheduler';
```
回调相关接口包导入:
```js
import WorkSchedulerExtensionAbility from '@ohos.WorkSchedulerExtensionAbility';
```
### 延迟任务调度
**表1** workScheduler主要接口 **表1** workScheduler主要接口
接口名 | 接口描述 接口名 | 接口描述
---------------------------------------------------------|----------------------------------------- ---------------------------------------------------------|-----------------------------------------
startWork(work: WorkInfo): boolean; | 延迟调度任务申请 startWork(work: WorkInfo): void; | 延迟调度任务申请
stopWork(work: WorkInfo, needCancel?: boolean): boolean; | 延迟调度任务取消 stopWork(work: WorkInfo, needCancel?: boolean): void; | 延迟调度任务取消
getWorkStatus(workId: number, callback: AsyncCallback\<WorkInfo>): void;| 获取延迟调度任务状态(Callback形式) getWorkStatus(workId: number, callback: AsyncCallback\<WorkInfo>): void;| 获取延迟调度任务状态(Callback形式)
getWorkStatus(workId: number): Promise\<WorkInfo>; | 获取延迟调度任务状态(Promise形式) getWorkStatus(workId: number): Promise\<WorkInfo>; | 获取延迟调度任务状态(Promise形式)
obtainAllWorks(callback: AsyncCallback\<void>): Array\<WorkInfo>;| 获取所有延迟调度任务(Callback形式) obtainAllWorks(callback: AsyncCallback\<void>): Array\<WorkInfo>;| 获取所有延迟调度任务(Callback形式)
obtainAllWorks(): Promise<Array\<WorkInfo>>;| 获取所有延迟调度任务(Promise形式) obtainAllWorks(): Promise<Array\<WorkInfo>>;| 获取所有延迟调度任务(Promise形式)
stopAndClearWorks(): boolean;| 停止并清除任务 stopAndClearWorks(): void;| 停止并清除任务
isLastWorkTimeOut(workId: number, callback: AsyncCallback\<void>): boolean;| 获取上次任务是否超时(针对RepeatWork,Callback形式) isLastWorkTimeOut(workId: number, callback: AsyncCallback\<void>): boolean;| 获取上次任务是否超时(针对RepeatWork,Callback形式)
isLastWorkTimeOut(workId: number): Promise\<boolean>;| 获取上次任务是否超时(针对RepeatWork,Promise形式) isLastWorkTimeOut(workId: number): Promise\<boolean>;| 获取上次任务是否超时(针对RepeatWork,Promise形式)
**表2** WorkInfo包含参数 **表2** WorkInfo包含参数
> **说明:** WorkInfo设置参数约束见[延迟任务调度约束](./background-task-overview.md#延迟任务调度约束) WorkInfo设置参数约束见[延迟任务调度约束](./background-task-overview.md#延迟任务调度约束)
参数名| 类型 |描述 参数名| 类型 |描述
---------------------------------------------------------|-----------------------------------------|--------------------------------------------------------- ---------------------------------------------------------|-----------------------------------------|---------------------------------------------------------
workId| number | 延迟任务Id(必填) workId| number | 延迟任务Id(必填)
bundleName| string | 延迟任务包名(必填) bundleName| string | 延迟任务包名(必填)
abilityName| string | 延迟任务回调通知的组件名(必填) abilityName| string | 延迟任务回调通知的组件名(必填)
networkType | [NetworkType](../reference/apis/js-apis-workScheduler.md#networktype) | 网络类型 networkType | [NetworkType](../reference/apis/js-apis-resourceschedule-workScheduler.md#networktype) | 网络类型
isCharging| boolean | 是否充电 isCharging| boolean | 是否充电
chargerType| [ChargingType](../reference/apis/js-apis-workScheduler.md#chargingtype) | 充电类型 chargerType| [ChargingType](../reference/apis/js-apis-resourceschedule-workScheduler.md#chargingtype) | 充电类型
batteryLevel| number | 电量 batteryLevel| number | 电量
batteryStatus| [BatteryStatus](../reference/apis/js-apis-workScheduler.md#batterystatus) | 电池状态 batteryStatus| [BatteryStatus](../reference/apis/js-apis-resourceschedule-workScheduler.md#batterystatus) | 电池状态
storageRequest| [StorageRequest](../reference/apis/js-apis-workScheduler.md#storagerequest) |存储状态 storageRequest| [StorageRequest](../reference/apis/js-apis-resourceschedule-workScheduler.md#storagerequest) |存储状态
isRepeat| boolean |是否循环任务 isRepeat| boolean |是否循环任务
repeatCycleTime| number |循环间隔 repeatCycleTime| number |循环间隔
repeatCount | number|循环次数 repeatCount | number|循环次数
...@@ -61,7 +49,19 @@ onWorkStop(work: WorkInfo): void | 延迟调度任务结束回调 ...@@ -61,7 +49,19 @@ onWorkStop(work: WorkInfo): void | 延迟调度任务结束回调
### 开发步骤 ### 开发步骤
1、开发对应的ExtensionAbility,用于回调执行具体的延迟任务。关于ExtensionAbility的介绍,参考[ExtensionAbility机制](../ability/stage-brief.md#extensionability机制) 1、导入模块。
注册相关接口包导入:
```js
import workScheduler from '@ohos.resourceschedule.workScheduler';
```
回调相关接口包导入:
```js
import WorkSchedulerExtensionAbility from '@ohos.WorkSchedulerExtensionAbility';
```
2、开发对应的ExtensionAbility,用于回调执行具体的延迟任务。关于ExtensionAbility的介绍,参考[ExtensionAbility机制](../ability/stage-brief.md#extensionability机制)
```ts ```ts
import WorkSchedulerExtensionAbility from '@ohos.WorkSchedulerExtensionAbility'; import WorkSchedulerExtensionAbility from '@ohos.WorkSchedulerExtensionAbility';
...@@ -77,10 +77,10 @@ export default class MyExtension extends WorkSchedulerExtensionAbility { ...@@ -77,10 +77,10 @@ export default class MyExtension extends WorkSchedulerExtensionAbility {
``` ```
2、注册延迟任务 3、注册延迟任务
```ts ```ts
import workScheduler from '@ohos.workScheduler'; import workScheduler from '@ohos.resourceschedule.workScheduler';
let workInfo = { let workInfo = {
workId: 1, workId: 1,
...@@ -96,15 +96,19 @@ let workInfo = { ...@@ -96,15 +96,19 @@ let workInfo = {
mykey3: 1.5 mykey3: 1.5
} }
} }
var res = workScheduler.startWork(workInfo); try{
console.info("workschedulerLog res:" + res); workScheduler.startWork(workInfo);
console.info('workschedulerLog startWork success');
} catch (error) {
console.error(`workschedulerLog startwork failed. code is ${error.code} message is ${error.message}`);
}
``` ```
3、取消延迟任务 4、取消延迟任务
```ts ```ts
import workScheduler from '@ohos.workScheduler'; import workScheduler from '@ohos.resourceschedule.workScheduler';
let workInfo = { let workInfo = {
workId: 1, workId: 1,
...@@ -120,51 +124,75 @@ let workInfo = { ...@@ -120,51 +124,75 @@ let workInfo = {
mykey3: 1.5 mykey3: 1.5
} }
} }
var res = workScheduler.stopWork(workInfo, false); try{
console.info("workschedulerLog res:" + res); workScheduler.stopWork(workInfo, false);
console.info('workschedulerLog stopWork success');
} catch (error) {
console.error(`workschedulerLog stopWork failed. code is ${error.code} message is ${error.message}`);
}
``` ```
4、获取指定延迟任务 5、获取指定延迟任务
```ts ```ts
workScheduler.getWorkStatus(50).then((res) => { try{
workScheduler.getWorkStatus(50, (error, res) => {
if (error) {
console.error(`workschedulerLog getWorkStatus failed. code is ${error.code} message is ${error.message}`);
} else {
for (let item in res) { for (let item in res) {
console.info('workschedulerLog getWorkStatus success,' + item + ' is:' + res[item]); console.info(`workschedulerLog getWorkStatus success, ${item} is: ${res[item]}`);
} }
}).catch((err) => { }
console.info('workschedulerLog getWorkStatus failed, because:' + err.code); });
}) } catch (error) {
console.error(`workschedulerLog getWorkStatus failed. code is ${error.code} message is ${error.message}`);
}
``` ```
5、获取所有延迟任务 6、获取所有延迟任务
```ts ```ts
workScheduler.obtainAllWorks().then((res) => { try{
console.info('workschedulerLog obtainAllWorks success, data is:' + JSON.stringify(res)); workScheduler.obtainAllWorks((error, res) =>{
}).catch((err) => { if (error) {
console.info('workschedulerLog obtainAllWorks failed, because:' + err.code); console.error(`workschedulerLog obtainAllWorks failed. code is ${error.code} message is ${error.message}`);
}) } else {
console.info(`workschedulerLog obtainAllWorks success, data is: ${JSON.stringify(res)}`);
}
});
} catch (error) {
console.error(`workschedulerLog obtainAllWorks failed. code is ${error.code} message is ${error.message}`);
}
``` ```
6、停止并清除任务 7、停止并清除任务
```ts ```ts
let res = workScheduler.stopAndClearWorks(); try{
console.info("workschedulerLog res:" + res); workScheduler.stopAndClearWorks();
console.info(`workschedulerLog stopAndClearWorks success`);
} catch (error) {
console.error(`workschedulerLog stopAndClearWorks failed. code is ${error.code} message is ${error.message}`);
}
``` ```
7、判断上次执行是否超时 8、判断上次执行是否超时
```ts ```ts
workScheduler.isLastWorkTimeOut(500) try{
.then(res => { workScheduler.isLastWorkTimeOut(500, (error, res) =>{
console.info('workschedulerLog isLastWorkTimeOut success, data is:' + res); if (error) {
}) onsole.error(`workschedulerLog isLastWorkTimeOut failed. code is ${error.code} message is ${error.message}`);
.catch(err => { } else {
console.info('workschedulerLog isLastWorkTimeOut failed, because:' + err.code); console.info(`workschedulerLog isLastWorkTimeOut success, data is: ${res}`);
}
}); });
} catch (error) {
console.error(`workschedulerLog isLastWorkTimeOut failed. code is ${error.code} message is ${error.message}`);
}
``` ```
## 相关实例 ## 相关实例
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册