Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
ac819e96
D
Docs
项目概览
OpenHarmony
/
Docs
接近 2 年 前同步成功
通知
159
Star
292
Fork
28
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
Docs
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
ac819e96
编写于
10月 26, 2022
作者:
O
openharmony_ci
提交者:
Gitee
10月 26, 2022
浏览文件
操作
浏览文件
下载
差异文件
!10688 资源调度后台任务错误码api文档修改
Merge pull request !10688 from 朱天怡/master
上级
277c3045
d35cbda5
变更
10
展开全部
隐藏空白更改
内联
并排
Showing
10 changed file
with
1523 addition
and
572 deletion
+1523
-572
zh-cn/application-dev/reference/apis/Readme-CN.md
zh-cn/application-dev/reference/apis/Readme-CN.md
+4
-3
zh-cn/application-dev/reference/apis/js-apis-WorkSchedulerExtensionAbility.md
...v/reference/apis/js-apis-WorkSchedulerExtensionAbility.md
+2
-2
zh-cn/application-dev/reference/apis/js-apis-backgroundTaskManager.md
...ation-dev/reference/apis/js-apis-backgroundTaskManager.md
+20
-99
zh-cn/application-dev/reference/apis/js-apis-resourceschedule-backgroundTaskManager.md
...ce/apis/js-apis-resourceschedule-backgroundTaskManager.md
+617
-0
zh-cn/application-dev/reference/apis/js-apis-resourceschedule-workScheduler.md
.../reference/apis/js-apis-resourceschedule-workScheduler.md
+480
-360
zh-cn/application-dev/reference/errorcodes/errorcode-backgroundTaskMgr.md
...n-dev/reference/errorcodes/errorcode-backgroundTaskMgr.md
+166
-0
zh-cn/application-dev/reference/errorcodes/errorcode-workScheduler.md
...ation-dev/reference/errorcodes/errorcode-workScheduler.md
+78
-0
zh-cn/application-dev/task-management/continuous-task-dev-guide.md
...lication-dev/task-management/continuous-task-dev-guide.md
+70
-50
zh-cn/application-dev/task-management/transient-task-dev-guide.md
...plication-dev/task-management/transient-task-dev-guide.md
+4
-4
zh-cn/application-dev/task-management/work-scheduler-dev-guide.md
...plication-dev/task-management/work-scheduler-dev-guide.md
+82
-54
未找到文件。
zh-cn/application-dev/reference/apis/Readme-CN.md
浏览文件 @
ac819e96
# 接口
# 接口
-
[
开发说明
](
development-intro.md
)
-
Ability框架
-
FA模型
...
...
@@ -116,11 +116,11 @@
-
[
@ohos.intl (国际化-Intl)
](
js-apis-intl.md
)
-
[
@ohos.resourceManager (资源管理)
](
js-apis-resource-manager.md
)
-
资源调度
-
[
@ohos.backgroundTaskManager (后台任务管理)
](
js-apis-backgroundTaskManager.md
)
-
[
@ohos.distributedMissionManager (分布式任务管理)
](
js-apis-distributedMissionManager.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.workScheduler (延迟任务调度)
](
js-apis-workScheduler.md
)
-
[
@ohos.WorkSchedulerExtensionAbility (延迟任务调度回调)
](
js-apis-WorkSchedulerExtensionAbility.md
)
-
定制管理
-
[
@ohos.configPolicy (配置策略)
](
js-apis-config-policy.md
)
...
...
@@ -269,6 +269,7 @@
-
[
@ohos.application.testRunner (TestRunner)
](
js-apis-testRunner.md
)
-
[
@ohos.uitest (UiTest)
](
js-apis-uitest.md
)
-
已停止维护的接口
-
[
@ohos.backgroundTaskManager (后台任务管理)
](
js-apis-backgroundTaskManager.md
)
-
[
@ohos.bundleState (设备使用信息统计)
](
js-apis-deviceUsageStatistics.md
)
-
[
@ohos.bytrace (性能打点)
](
js-apis-bytrace.md
)
-
[
@ohos.data.storage (轻量级存储)
](
js-apis-data-storage.md
)
...
...
zh-cn/application-dev/reference/apis/js-apis-WorkSchedulerExtensionAbility.md
浏览文件 @
ac819e96
...
...
@@ -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
| 参数名 | 类型 | 必填 | 说明 |
| ---- | ---------------------------------------- | ---- | -------------- |
| work |
[
workScheduler.WorkInfo
](
js-apis-workScheduler.md#workinfo
)
| 是 | 指示要添加到执行队列的工作。 |
| work |
[
workScheduler.WorkInfo
](
js-apis-
resourceschedule-
workScheduler.md#workinfo
)
| 是 | 指示要添加到执行队列的工作。 |
**示例:**
...
...
zh-cn/application-dev/reference/apis/js-apis-backgroundTaskManager.md
浏览文件 @
ac819e96
...
...
@@ -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
**系统能力:**
SystemCapability.ResourceSchedule.BackgroundTaskManager.TransientTask
**参数**
:
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------------------- | ---- | ------------------------------ |
| reason | string | 是 | 延迟挂起申请的原因。 |
| callback | Callback
<
void
>
| 是 | 延迟即将超时的回调函数,一般在超时前6秒通过此回调通知应用。 |
**返回值**
:
| 类型 | 说明 |
| ------------------------------------- | --------- |
|
[
DelaySuspendInfo
](
#delaysuspendinfo
)
| 返回延迟挂起信息。 |
...
...
@@ -45,6 +48,8 @@ requestSuspendDelay(reason: string, callback: Callback<void>): DelaySuspen
**示例**
:
```
js
import
backgroundTaskManager
from
'
@ohos.backgroundTaskManager
'
;
let
myReason
=
'
test requestSuspendDelay
'
;
let
delayInfo
=
backgroundTaskManager
.
requestSuspendDelay
(
myReason
,
()
=>
{
console
.
info
(
"
Request suspension delay will time out.
"
);
...
...
@@ -66,6 +71,7 @@ getRemainingDelayTime(requestId: number, callback: AsyncCallback<number>):
**系统能力:**
SystemCapability.ResourceSchedule.BackgroundTaskManager.TransientTask
**参数**
:
| 参数名 | 类型 | 必填 | 说明 |
| --------- | --------------------------- | ---- | ---------------------------------------- |
| requestId | number | 是 | 延迟挂起的请求ID。这个值通过调用
[
requestSuspendDelay
](
#backgroundtaskmanagerrequestsuspenddelay
)
方法获取。 |
...
...
@@ -74,6 +80,8 @@ getRemainingDelayTime(requestId: number, callback: AsyncCallback<number>):
**示例**
:
```
js
import
backgroundTaskManager
from
'
@ohos.backgroundTaskManager
'
;
let
delayInfo
=
backgroundTaskManager
.
requestSuspendDelay
(
"
test
"
,
()
=>
{});
backgroundTaskManager
.
getRemainingDelayTime
(
delayInfo
.
requestId
,
(
err
,
res
)
=>
{
if
(
err
)
{
...
...
@@ -94,16 +102,19 @@ getRemainingDelayTime(requestId: number): Promise<number>
**系统能力:**
SystemCapability.ResourceSchedule.BackgroundTaskManager.TransientTask
**参数**
:
| 参数名 | 类型 | 必填 | 说明 |
| --------- | ------ | ---- | ---------- |
| requestId | number | 是 | 延迟挂起的请求ID。这个值通过调用
[
requestSuspendDelay
](
#backgroundtaskmanagerrequestsuspenddelay
)
方法获取。 |
**返回值**
:
| 类型 | 说明 |
| --------------------- | ---------------------------------------- |
| Promise
<
number
>
| 指定的Promise回调方法。返回应用程序进入挂起状态之前的剩余时间,以毫秒为单位。 |
**示例**
:
```
js
let
delayInfo
=
backgroundTaskManager
.
requestSuspendDelay
(
"
test
"
,
()
=>
{});
backgroundTaskManager
.
getRemainingDelayTime
(
delayInfo
.
requestId
).
then
(
res
=>
{
...
...
@@ -123,11 +134,13 @@ cancelSuspendDelay(requestId: number): void
**系统能力:**
SystemCapability.ResourceSchedule.BackgroundTaskManager.TransientTask
**参数**
:
| 参数名 | 类型 | 必填 | 说明 |
| --------- | ------ | ---- | ---------- |
| requestId | number | 是 | 延迟挂起的请求ID。这个值通过调用
[
requestSuspendDelay
](
#backgroundtaskmanagerrequestsuspenddelay
)
方法获取。 |
**示例**
:
```
js
let
delayInfo
=
backgroundTaskManager
.
requestSuspendDelay
(
"
test
"
,
()
=>
{});
backgroundTaskManager
.
cancelSuspendDelay
(
delayInfo
.
requestId
);
...
...
@@ -145,6 +158,7 @@ startBackgroundRunning(context: Context, bgMode: BackgroundMode, wantAgent: Want
**系统能力:**
SystemCapability.ResourceSchedule.BackgroundTaskManager.ContinuousTask
**参数**
:
| 参数名 | 类型 | 必填 | 说明 |
| --------- | ---------------------------------- | ---- | ---------------------------------------- |
| 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
| wantAgent |
[
WantAgent
](
js-apis-wantAgent.md
)
| 是 | 通知参数,用于指定长时任务通知点击跳转的界面。 |
**返回值**
:
| 类型 | 说明 |
| -------------- | ---------------- |
| Promise
\<
void> | 使用Promise形式返回结果。 |
...
...
@@ -321,6 +336,7 @@ stopBackgroundRunning(context: Context, callback: AsyncCallback<void>): vo
**系统能力:**
SystemCapability.ResourceSchedule.BackgroundTaskManager.ContinuousTask
**参数**
:
| 参数名 | 类型 | 必填 | 说明 |
| -------- | ------------------------- | ---- | ---------------------------------------- |
| 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<void>
**系统能力:**
SystemCapability.ResourceSchedule.BackgroundTaskManager.ContinuousTask
**参数**
:
| 参数名 | 类型 | 必填 | 说明 |
| ------- | ------- | ---- | ---------------------------------------- |
| context | Context | 是 | 应用运行的上下文。
<br>
FA模型的应用Context定义见
[
Context
](
js-apis-Context.md
)
。
<br>
Stage模型的应用Context定义见
[
Context
](
js-apis-ability-context.md
)
。 |
**返回值**
:
| 类型 | 说明 |
| -------------- | ---------------- |
| Promise
\<
void> | 使用Promise形式返回结果。 |
...
...
@@ -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
延迟挂起信息。
...
...
@@ -506,39 +462,4 @@ backgroundTaskManager.resetAllEfficiencyResources();
| MULTI_DEVICE_CONNECTION | 6 | 多设备互联。 |
| WIFI_INTERACTION | 7 | WLAN相关
<br
/>
此接口为系统接口。 |
| VOIP | 8 | 音视频通话
<br
/>
此接口为系统接口。 |
| TASK_KEEPING | 9 | 计算任务(仅在特定设备生效)。 |
## 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
| TASK_KEEPING | 9 | 计算任务(仅在特定设备生效)。 |
\ No newline at end of file
zh-cn/application-dev/reference/apis/js-apis-resourceschedule-backgroundTaskManager.md
0 → 100644
浏览文件 @
ac819e96
此差异已折叠。
点击以展开。
zh-cn/application-dev/reference/apis/js-apis-workScheduler.md
→
zh-cn/application-dev/reference/apis/js-apis-
resourceschedule-
workScheduler.md
浏览文件 @
ac819e96
此差异已折叠。
点击以展开。
zh-cn/application-dev/reference/errorcodes/errorcode-backgroundTaskMgr.md
0 → 100644
浏览文件 @
ac819e96
# 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
zh-cn/application-dev/reference/errorcodes/errorcode-workScheduler.md
0 → 100644
浏览文件 @
ac819e96
# 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分钟。
**处理步骤**
请检查输入的参数和代码逻辑。
zh-cn/application-dev/task-management/continuous-task-dev-guide.md
浏览文件 @
ac819e96
#
#
长时任务
# 长时任务
##
#
场景说明
## 场景说明
如果应用需要在后台长时间执行用户可感知的任务,如后台播放音乐、导航、设备连接、VoIP等,则使用长时任务避免进入挂起(Suspend)状态。
长时任务在后台执行没有时间限制。为了避免该机制被滥用,系统只允许申请有限个数的长时任务类型,同时会有相应的通知提示与长时任务相关联,使用户可感知,并且系统会添加相应的校验机制,确保应用是的确在执行相应的长时任务。
##
# 权限
##
接口说明
ohos.permission.KEEP_BACKGROUND_RUNNING
### 接口说明
**表2**
长时任务主要接口
**表1**
长时任务主要接口
| 接口名 | 描述 |
| ---------------------------------------- | ---------------------------- |
...
...
@@ -21,7 +17,7 @@ ohos.permission.KEEP_BACKGROUND_RUNNING
其中,wantAgent的信息详见(
[
WantAgent
](
../reference/apis/js-apis-wantAgent.md
)
)
**表
3
**
后台模式类型
**表
2
**
后台模式类型
| 参数名 | id值 | 描述 | 配置项 |
| ----------------------- | ---- | -------------- | --------------------- |
...
...
@@ -36,9 +32,9 @@ ohos.permission.KEEP_BACKGROUND_RUNNING
| TASK_KEEPING | 9 | 计算任务(仅供特定设备使用) | taskKeeping |
##
#
开发步骤
## 开发步骤
基于FA模型:
### 基于FA模型
基于FA的Service Ability使用,参考
[
ServiceAbility开发指导
](
../ability/fa-serviceability.md
)
。
...
...
@@ -46,7 +42,7 @@ ohos.permission.KEEP_BACKGROUND_RUNNING
当需要与后台执行的长时任务交互时(如播放音乐等)。可以采用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": {
...
...
@@ -71,7 +67,7 @@ ohos.permission.KEEP_BACKGROUND_RUNNING
2、在Service Ability调用长时任务的申请和取消接口。
```
js
import
backgroundTaskManager
from
'
@ohos.
backgroundTaskManager
'
;
import
backgroundTaskManager
from
'
@ohos.
resourceschedule.backgroundTaskManager
'
;
import
featureAbility
from
'
@ohos.ability.featureAbility
'
;
import
wantAgent
from
'
@ohos.wantAgent
'
;
import
rpc
from
"
@ohos.rpc
"
;
...
...
@@ -95,21 +91,29 @@ function startContinuousTask() {
// 通过wantAgent模块的getWantAgent方法获取WantAgent对象
wantAgent
.
getWantAgent
(
wantAgentInfo
).
then
((
wantAgentObj
)
=>
{
backgroundTaskManager
.
startBackgroundRunning
(
featureAbility
.
getContext
(),
backgroundTaskManager
.
BackgroundMode
.
DATA_TRANSFER
,
wantAgentObj
).
then
(()
=>
{
console
.
info
(
"
Operation startBackgroundRunning succeeded
"
);
}).
catch
((
err
)
=>
{
console
.
error
(
"
Operation startBackgroundRunning failed Cause:
"
+
err
);
});
try
{
backgroundTaskManager
.
startBackgroundRunning
(
featureAbility
.
getContext
(),
backgroundTaskManager
.
BackgroundMode
.
DATA_TRANSFER
,
wantAgentObj
).
then
(()
=>
{
console
.
info
(
"
Operation startBackgroundRunning succeeded
"
);
}).
catch
((
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
()
{
backgroundTaskManager
.
stopBackgroundRunning
(
featureAbility
.
getContext
()).
then
(()
=>
{
console
.
info
(
"
Operation stopBackgroundRunning succeeded
"
);
}).
catch
((
err
)
=>
{
console
.
error
(
"
Operation stopBackgroundRunning failed Cause:
"
+
err
);
});
try
{
backgroundTaskManager
.
stopBackgroundRunning
(
featureAbility
.
getContext
()).
then
(()
=>
{
console
.
info
(
"
Operation stopBackgroundRunning succeeded
"
);
}).
catch
((
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
()
{
...
...
@@ -173,11 +177,11 @@ export default {
};
```
基于Stage模型:
### 基于Stage模型
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": {
...
...
@@ -201,7 +205,7 @@ Stage模型的相关信息参考[Stage模型综述](../ability/stage-brief.md)
```
ts
import
wantAgent
from
'
@ohos.wantAgent
'
;
import
backgroundTaskManager
from
'
@ohos.backgroundTaskManager
'
;
import
backgroundTaskManager
from
'
@ohos.
resourceschedule.
backgroundTaskManager
'
;
@
Entry
@
Component
...
...
@@ -229,21 +233,29 @@ struct Index {
// 通过wantAgent模块的getWantAgent方法获取WantAgent对象
wantAgent
.
getWantAgent
(
wantAgentInfo
).
then
((
wantAgentObj
)
=>
{
backgroundTaskManager
.
startBackgroundRunning
(
this
.
context
,
backgroundTaskManager
.
BackgroundMode
.
DATA_TRANSFER
,
wantAgentObj
).
then
(()
=>
{
console
.
info
(
"
Operation startBackgroundRunning succeeded
"
);
}).
catch
((
err
)
=>
{
console
.
error
(
"
Operation startBackgroundRunning failed Cause:
"
+
err
);
});
try
{
backgroundTaskManager
.
startBackgroundRunning
(
this
.
context
,
backgroundTaskManager
.
BackgroundMode
.
DATA_TRANSFER
,
wantAgentObj
).
then
(()
=>
{
console
.
info
(
"
Operation startBackgroundRunning succeeded
"
);
}).
catch
((
err
)
=>
{
console
.
error
(
"
Operation startBackgroundRunning failed Cause:
"
+
err
);
});
}
catch
(
error
)
{
console
.
error
(
`Operation startBackgroundRunning failed. code is
${
error
.
code
}
message is
${
error
.
message
}
`
);
}
});
}
stopContinuousTask
()
{
backgroundTaskManager
.
stopBackgroundRunning
(
this
.
context
).
then
(()
=>
{
console
.
info
(
"
Operation stopBackgroundRunning succeeded
"
);
}).
catch
((
err
)
=>
{
console
.
error
(
"
Operation stopBackgroundRunning failed Cause:
"
+
err
);
});
try
{
backgroundTaskManager
.
stopBackgroundRunning
(
this
.
context
).
then
(()
=>
{
console
.
info
(
"
Operation stopBackgroundRunning succeeded
"
);
}).
catch
((
err
)
=>
{
console
.
error
(
"
Operation stopBackgroundRunning failed Cause:
"
+
err
);
});
}
catch
(
error
)
{
console
.
error
(
`Operation stopBackgroundRunning failed. code is
${
error
.
code
}
message is
${
error
.
message
}
`
);
}
}
build
()
{
...
...
@@ -282,7 +294,7 @@ struct Index {
```
ts
import
Ability
from
'
@ohos.application.Ability
'
import
backgroundTaskManager
from
'
@ohos.
backgroundTaskManager
'
;
import
backgroundTaskManager
from
'
@ohos.
resourceschedule.backgroundTaskManager
'
;
import
wantAgent
from
'
@ohos.wantAgent
'
;
const
MSG_SEND_METHOD
:
string
=
'
CallSendMsg
'
...
...
@@ -308,21 +320,29 @@ function startContinuousTask() {
// 通过wantAgent模块的getWantAgent方法获取WantAgent对象
wantAgent
.
getWantAgent
(
wantAgentInfo
).
then
((
wantAgentObj
)
=>
{
backgroundTaskManager
.
startBackgroundRunning
(
mContext
,
backgroundTaskManager
.
BackgroundMode
.
DATA_TRANSFER
,
wantAgentObj
).
then
(()
=>
{
console
.
info
(
"
Operation startBackgroundRunning succeeded
"
);
}).
catch
((
err
)
=>
{
console
.
error
(
"
Operation startBackgroundRunning failed Cause:
"
+
err
);
});
try
{
backgroundTaskManager
.
startBackgroundRunning
(
featureAbility
.
getContext
(),
backgroundTaskManager
.
BackgroundMode
.
DATA_TRANSFER
,
wantAgentObj
).
then
(()
=>
{
console
.
info
(
"
Operation startBackgroundRunning succeeded
"
);
}).
catch
((
error
)
=>
{
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
()
{
backgroundTaskManager
.
stopBackgroundRunning
(
mContext
).
then
(()
=>
{
console
.
info
(
"
Operation stopBackgroundRunning succeeded
"
);
}).
catch
((
err
)
=>
{
console
.
error
(
"
Operation stopBackgroundRunning failed Cause:
"
+
err
);
});
try
{
backgroundTaskManager
.
stopBackgroundRunning
(
featureAbility
.
getContext
()).
then
(()
=>
{
console
.
info
(
"
Operation stopBackgroundRunning succeeded
"
);
}).
catch
((
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
{
...
...
zh-cn/application-dev/task-management/transient-task-dev-guide.md
浏览文件 @
ac819e96
#
#
短时任务
# 短时任务
##
#
场景说明
## 场景说明
当应用退到后台默认有6到12秒的运行时长,超过该时间后,系统会将应用置为挂起状态。对于绝大多数应用,6到12秒的时间,足够执行一些重要的任务,但如果应用需要更多的时间,可以通过短时任务接口,扩展应用的执行时间。
建议不要等到应用退后台后,才调用requestSuspendDelay方法申请延迟挂起,而是应该在执行任何的耗时操作前,都应该调用该接口,向系统申明扩展应用的执行时间。
...
...
@@ -11,7 +11,7 @@
一些典型的耗时任务有,需要保存一些状态数据到本地数据库,需要打开和处理一个大型文件,需要同步一些数据到应用的云端服务器等。
##
#
接口说明
## 接口说明
**表1**
短时任务主要接口
...
...
@@ -23,7 +23,7 @@
| cancelSuspendDelay(requestId:
number):
void | 取消延迟挂起。 |
##
#
开发步骤
## 开发步骤
1、当应用需要开始执行一个耗时的任务时。调用短时任务申请接口,并且在任务执行完后,调用短时任务取消接口。
...
...
zh-cn/application-dev/task-management/work-scheduler-dev-guide.md
浏览文件 @
ac819e96
...
...
@@ -4,49 +4,37 @@
应用要执行对实时性要求不高的任务或持久性任务的时候,比如设备空闲时候做一次数据学习等场景,可以使用延迟调度任务,该机制在满足应用设定条件的时候,会根据系统当前状态,如内存、功耗、温度等统一决策调度时间。延迟任务调度约束见
[
延迟任务调度约束
](
./background-task-overview.md#延迟任务调度约束
)
。
## 接口说明
注册相关接口包导入:
```
js
import
workScheduler
from
'
@ohos.workScheduler
'
;
```
回调相关接口包导入:
```
js
import
WorkSchedulerExtensionAbility
from
'
@ohos.WorkSchedulerExtensionAbility
'
;
```
### 延迟任务调度
**表1**
workScheduler主要接口
接口名 | 接口描述
---------------------------------------------------------|-----------------------------------------
startWork(work: WorkInfo):
boolean
; | 延迟调度任务申请
stopWork(work: WorkInfo, needCancel?: boolean):
boolean
; | 延迟调度任务取消
startWork(work: WorkInfo):
void
; | 延迟调度任务申请
stopWork(work: WorkInfo, needCancel?: boolean):
void
; | 延迟调度任务取消
getWorkStatus(workId: number, callback: AsyncCallback
\<
WorkInfo>): void;| 获取延迟调度任务状态(Callback形式)
getWorkStatus(workId: number): Promise
\<
WorkInfo>; | 获取延迟调度任务状态(Promise形式)
obtainAllWorks(callback: AsyncCallback
\<
void>): Array
\<
WorkInfo>;| 获取所有延迟调度任务(Callback形式)
obtainAllWorks(): Promise
<Array
\<
WorkInfo
>
>;| 获取所有延迟调度任务(Promise形式)
stopAndClearWorks():
boolean
;| 停止并清除任务
stopAndClearWorks():
void
;| 停止并清除任务
isLastWorkTimeOut(workId: number, callback: AsyncCallback
\<
void>): boolean;| 获取上次任务是否超时(针对RepeatWork,Callback形式)
isLastWorkTimeOut(workId: number): Promise
\<
boolean>;| 获取上次任务是否超时(针对RepeatWork,Promise形式)
**表2**
WorkInfo包含参数
> **说明:**
WorkInfo设置参数约束见[延迟任务调度约束](./background-task-overview.md#延迟任务调度约束)
WorkInfo设置参数约束见
[
延迟任务调度约束
](
./background-task-overview.md#延迟任务调度约束
)
参数名| 类型 |描述
---------------------------------------------------------|-----------------------------------------|---------------------------------------------------------
workId| number | 延迟任务Id(必填)
bundleName| string | 延迟任务包名(必填)
abilityName| string | 延迟任务回调通知的组件名(必填)
networkType |
[
NetworkType
](
../reference/apis/js-apis-workScheduler.md#networktype
)
| 网络类型
networkType |
[
NetworkType
](
../reference/apis/js-apis-
resourceschedule-
workScheduler.md#networktype
)
| 网络类型
isCharging| boolean | 是否充电
chargerType|
[
ChargingType
](
../reference/apis/js-apis-workScheduler.md#chargingtype
)
| 充电类型
chargerType|
[
ChargingType
](
../reference/apis/js-apis-
resourceschedule-
workScheduler.md#chargingtype
)
| 充电类型
batteryLevel| number | 电量
batteryStatus|
[
BatteryStatus
](
../reference/apis/js-apis-workScheduler.md#batterystatus
)
| 电池状态
storageRequest|
[
StorageRequest
](
../reference/apis/js-apis-workScheduler.md#storagerequest
)
|存储状态
batteryStatus|
[
BatteryStatus
](
../reference/apis/js-apis-
resourceschedule-
workScheduler.md#batterystatus
)
| 电池状态
storageRequest|
[
StorageRequest
](
../reference/apis/js-apis-
resourceschedule-
workScheduler.md#storagerequest
)
|存储状态
isRepeat| boolean |是否循环任务
repeatCycleTime| number |循环间隔
repeatCount | number|循环次数
...
...
@@ -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
import
WorkSchedulerExtensionAbility
from
'
@ohos.WorkSchedulerExtensionAbility
'
;
...
...
@@ -77,11 +77,11 @@ export default class MyExtension extends WorkSchedulerExtensionAbility {
```
2
、注册延迟任务
3
、注册延迟任务
```
ts
import
workScheduler
from
'
@ohos.workScheduler
'
;
import
workScheduler
from
'
@ohos.
resourceschedule.
workScheduler
'
;
let
workInfo
=
{
workId
:
1
,
batteryStatus
:
workScheduler
.
BatteryStatus
.
BATTERY_STATUS_LOW
,
...
...
@@ -96,15 +96,19 @@ let workInfo = {
mykey3
:
1.5
}
}
var
res
=
workScheduler
.
startWork
(
workInfo
);
console
.
info
(
"
workschedulerLog res:
"
+
res
);
try
{
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
import
workScheduler
from
'
@ohos.workScheduler
'
;
import
workScheduler
from
'
@ohos.
resourceschedule.
workScheduler
'
;
let
workInfo
=
{
workId
:
1
,
...
...
@@ -120,51 +124,75 @@ let workInfo = {
mykey3
:
1.5
}
}
var
res
=
workScheduler
.
stopWork
(
workInfo
,
false
);
console
.
info
(
"
workschedulerLog res:
"
+
res
);
try
{
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
workScheduler
.
getWorkStatus
(
50
).
then
((
res
)
=>
{
for
(
let
item
in
res
)
{
console
.
info
(
'
workschedulerLog getWorkStatus success,
'
+
item
+
'
is:
'
+
res
[
item
]);
}
}).
catch
((
err
)
=>
{
console
.
info
(
'
workschedulerLog getWorkStatus failed, because:
'
+
err
.
code
);
})
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
)
{
console
.
info
(
`workschedulerLog getWorkStatus success,
${
item
}
is:
${
res
[
item
]}
`
);
}
}
});
}
catch
(
error
)
{
console
.
error
(
`workschedulerLog getWorkStatus failed. code is
${
error
.
code
}
message is
${
error
.
message
}
`
);
}
```
5
、获取所有延迟任务
6
、获取所有延迟任务
```
ts
workScheduler
.
obtainAllWorks
().
then
((
res
)
=>
{
console
.
info
(
'
workschedulerLog obtainAllWorks success, data is:
'
+
JSON
.
stringify
(
res
));
}).
catch
((
err
)
=>
{
console
.
info
(
'
workschedulerLog obtainAllWorks failed, because:
'
+
err
.
code
);
})
try
{
workScheduler
.
obtainAllWorks
((
error
,
res
)
=>
{
if
(
error
)
{
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
let
res
=
workScheduler
.
stopAndClearWorks
();
console
.
info
(
"
workschedulerLog res:
"
+
res
);
try
{
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
workScheduler
.
isLastWorkTimeOut
(
500
)
.
then
(
res
=>
{
console
.
info
(
'
workschedulerLog isLastWorkTimeOut success, data is:
'
+
res
);
})
.
catch
(
err
=>
{
console
.
info
(
'
workschedulerLog isLastWorkTimeOut failed, because:
'
+
err
.
code
);
try
{
workScheduler
.
isLastWorkTimeOut
(
500
,
(
error
,
res
)
=>
{
if
(
error
)
{
onsole
.
error
(
`workschedulerLog isLastWorkTimeOut failed. code is
${
error
.
code
}
message is
${
error
.
message
}
`
);
}
else
{
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.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录