Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
3aa79ec5
D
Docs
项目概览
OpenHarmony
/
Docs
大约 2 年 前同步成功
通知
161
Star
293
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看板
未验证
提交
3aa79ec5
编写于
10月 17, 2022
作者:
朱
朱天怡
提交者:
Gitee
10月 17, 2022
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
修改
Signed-off-by:
N
朱天怡
<
zhutianyi2@huawei.com
>
上级
5f913f20
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
233 addition
and
122 deletion
+233
-122
zh-cn/application-dev/task-management/background-task-dev-guide.md
...lication-dev/task-management/background-task-dev-guide.md
+142
-67
zh-cn/application-dev/task-management/work-scheduler-dev-guide.md
...plication-dev/task-management/work-scheduler-dev-guide.md
+91
-55
未找到文件。
zh-cn/application-dev/task-management/background-task-dev-guide.md
浏览文件 @
3aa79ec5
...
@@ -12,6 +12,8 @@
...
@@ -12,6 +12,8 @@
**表1**
短时任务主要接口
**表1**
短时任务主要接口
> **说明:** 后台任务管理错误码见[backgroundTaskManager错误码](../errorcodes/errorcode-backgroundTaskMgr.md)。
| 接口名 | 描述 |
| 接口名 | 描述 |
| ---------------------------------------- | ---------------------------------------- |
| ---------------------------------------- | ---------------------------------------- |
| requestSuspendDelay(reason:
string,
callback:
Callback
<
void
>
):
[
DelaySuspendInfo
](
../reference/apis/js-apis-backgroundTaskManager.md#delaysuspendinfo
)
| 后台应用申请延迟挂起。
<br/>
延迟挂起时间一般情况下默认值为180000,低电量时默认值为60000。 |
| requestSuspendDelay(reason:
string,
callback:
Callback
<
void
>
):
[
DelaySuspendInfo
](
../reference/apis/js-apis-backgroundTaskManager.md#delaysuspendinfo
)
| 后台应用申请延迟挂起。
<br/>
延迟挂起时间一般情况下默认值为180000,低电量时默认值为60000。 |
...
@@ -25,46 +27,65 @@
...
@@ -25,46 +27,65 @@
1.
申请延迟挂起
1.
申请延迟挂起
```js
```js
import backgroundTaskManager from '@ohos.
backgroundTaskManager';
import backgroundTaskManager from '@ohos.
resourceschedule.backgroundTaskManager';
let myReason = 'test requestSuspendDelay';
let myReason = 'test requestSuspendDelay';
let delayInfo = backgroundTaskManager.requestSuspendDelay(myReason, () => {
try {
console.info("Request suspension delay will time out.");
let delayInfo = backgroundTaskManager.requestSuspendDelay(myReason, () => {
});
console.info("Request suspension delay will time out.");
})
var id = delayInfo.requestId;
var id = delayInfo.requestId;
console.info("requestId is: " + id);
var time = delayInfo.actualDelayTime;
console.info("The requestId is: " + id);
console.info("The actualDelayTime is: " + time);
} catch (error) {
console.error(`requestSuspendDelay failed. code is ${error.code} message is ${error.message}`);
}
```
```
2.
获取进入挂起前的剩余时间
2.
获取进入挂起前的剩余时间
```js
```js
backgroundTaskManager.getRemainingDelayTime(id).then( res => {
try {
console.log('promise => Operation getRemainingDelayTime succeeded. Data: ' + JSON.stringify(res));
backgroundTaskManager.getRemainingDelayTime(id, (error, res) => {
}).catch( err => {
if(error) {
console.log('promise => Operation getRemainingDelayTime failed. Cause: ' + err.code);
console.error(`callback => Operation getRemainingDelayTime failed. code is ${error.code} message is ${error.message}`);
});
} else {
console.log('callback => Operation getRemainingDelayTime succeeded. Data: ' + JSON.stringify(res));
}
})
} catch (error) {
console.error(`callback => Operation getRemainingDelayTime failed. code is ${error.code} message is ${error.message}`);
}
```
```
3.
取消延迟挂起
3.
取消延迟挂起
```js
```js
backgroundTaskManager.cancelSuspendDelay(id);
try {
backgroundTaskManager.cancelSuspendDelay(id);
} catch (error) {
console.error(`cancelSuspendDelay failed. code is ${error.code} message is ${error.message}`);
}
```
```
### 开发实例
### 开发实例
```
js
```
js
import
backgroundTaskManager
from
'
@ohos.
backgroundTaskManager
'
;
import
backgroundTaskManager
from
'
@ohos.
resourceschedule.backgroundTaskManager
'
;
let
myReason
=
'
test requestSuspendDelay
'
;
let
myReason
=
'
test requestSuspendDelay
'
;
var
delayInfo
;
// 申请延迟挂起
// 申请延迟挂起
let
delayInfo
=
backgroundTaskManager
.
requestSuspendDelay
(
myReason
,
()
=>
{
try
{
console
.
info
(
"
Request suspension delay will time out.
"
);
delayInfo
=
backgroundTaskManager
.
requestSuspendDelay
(
myReason
,
()
=>
{
});
console
.
info
(
"
Request suspension delay will time out.
"
);
})
}
catch
(
error
)
{
console
.
error
(
`requestSuspendDelay failed. code is
${
error
.
code
}
message is
${
error
.
message
}
`
);
}
// 打印延迟挂起信息
// 打印延迟挂起信息
var
id
=
delayInfo
.
requestId
;
var
id
=
delayInfo
.
requestId
;
...
@@ -73,14 +94,24 @@ console.info("The requestId is: " + id);
...
@@ -73,14 +94,24 @@ console.info("The requestId is: " + id);
console
.
info
(
"
The actualDelayTime is:
"
+
time
);
console
.
info
(
"
The actualDelayTime is:
"
+
time
);
// 获取应用程序进入挂起状态前的剩余时间
// 获取应用程序进入挂起状态前的剩余时间
backgroundTaskManager
.
getRemainingDelayTime
(
id
).
then
(
res
=>
{
try
{
console
.
log
(
'
promise => Operation getRemainingDelayTime succeeded. Data:
'
+
JSON
.
stringify
(
res
));
backgroundTaskManager
.
getRemainingDelayTime
(
id
,
(
error
,
res
)
=>
{
}).
catch
(
err
=>
{
if
(
error
)
{
console
.
log
(
'
promise => Operation getRemainingDelayTime failed. Cause:
'
+
err
.
code
);
console
.
error
(
`callback => Operation getRemainingDelayTime failed. code is
${
error
.
code
}
message is
${
error
.
message
}
`
);
});
}
else
{
console
.
log
(
'
callback => Operation getRemainingDelayTime succeeded. Data:
'
+
JSON
.
stringify
(
res
));
}
})
}
catch
(
error
)
{
console
.
error
(
`callback => Operation getRemainingDelayTime failed. code is
${
error
.
code
}
message is
${
error
.
message
}
`
);
}
// 取消延迟挂起
// 取消延迟挂起
backgroundTaskManager
.
cancelSuspendDelay
(
id
);
try
{
backgroundTaskManager
.
cancelSuspendDelay
(
id
);
}
catch
(
error
)
{
console
.
error
(
`cancelSuspendDelay failed. code is
${
error
.
code
}
message is
${
error
.
message
}
`
);
}
```
```
## 长时任务
## 长时任务
...
@@ -93,6 +124,8 @@ ohos.permission.KEEP_BACKGROUND_RUNNING
...
@@ -93,6 +124,8 @@ ohos.permission.KEEP_BACKGROUND_RUNNING
**表2**
长时任务主要接口
**表2**
长时任务主要接口
> **说明:** 后台任务管理错误码见[backgroundTaskManager错误码](../errorcodes/errorcode-backgroundTaskMgr.md)。
| 接口名 | 描述 |
| 接口名 | 描述 |
| ---------------------------------------- | ---------------------------- |
| ---------------------------------------- | ---------------------------- |
| startBackgroundRunning(context: Context, bgMode: BackgroundMode, wantAgent: WantAgent): Promise
<
void
>
| 服务启动后,向系统申请长时任务,使服务一直保持后台运行。 |
| startBackgroundRunning(context: Context, bgMode: BackgroundMode, wantAgent: WantAgent): Promise
<
void
>
| 服务启动后,向系统申请长时任务,使服务一直保持后台运行。 |
...
@@ -145,7 +178,7 @@ ohos.permission.KEEP_BACKGROUND_RUNNING
...
@@ -145,7 +178,7 @@ ohos.permission.KEEP_BACKGROUND_RUNNING
2.
申请长时任务。
2.
申请长时任务。
```js
```js
import backgroundTaskManager from '@ohos.backgroundTaskManager';
import backgroundTaskManager from '@ohos.backgroundTaskManager';
import featureAbility from '@ohos.ability.featureAbility';
import featureAbility from '@ohos.ability.featureAbility';
import wantAgent from '@ohos.wantAgent';
import wantAgent from '@ohos.wantAgent';
...
@@ -175,7 +208,7 @@ ohos.permission.KEEP_BACKGROUND_RUNNING
...
@@ -175,7 +208,7 @@ ohos.permission.KEEP_BACKGROUND_RUNNING
3.
停止长时任务。
3.
停止长时任务。
```js
```js
import backgroundTaskManager from '@ohos.backgroundTaskManager';
import backgroundTaskManager from '@ohos.backgroundTaskManager';
import featureAbility from '@ohos.ability.featureAbility';
import featureAbility from '@ohos.ability.featureAbility';
backgroundTaskManager.stopBackgroundRunning(featureAbility.getContext()).then(() => {
backgroundTaskManager.stopBackgroundRunning(featureAbility.getContext()).then(() => {
...
@@ -211,7 +244,7 @@ ohos.permission.KEEP_BACKGROUND_RUNNING
...
@@ -211,7 +244,7 @@ ohos.permission.KEEP_BACKGROUND_RUNNING
2.
申请长时任务。
2.
申请长时任务。
```ts
```ts
import backgroundTaskManager from '@ohos.
backgroundTaskManager';
import backgroundTaskManager from '@ohos.
resourceschedule.backgroundTaskManager';
import wantAgent from '@ohos.wantAgent';
import wantAgent from '@ohos.wantAgent';
let wantAgentInfo = {
let wantAgentInfo = {
...
@@ -228,25 +261,33 @@ ohos.permission.KEEP_BACKGROUND_RUNNING
...
@@ -228,25 +261,33 @@ ohos.permission.KEEP_BACKGROUND_RUNNING
// 通过wantAgent模块的getWantAgent方法获取WantAgent对象
// 通过wantAgent模块的getWantAgent方法获取WantAgent对象
wantAgent.getWantAgent(wantAgentInfo).then((wantAgentObj) => {
wantAgent.getWantAgent(wantAgentInfo).then((wantAgentObj) => {
backgroundTaskManager.startBackgroundRunning(this.context,
try {
backgroundTaskManager.BackgroundMode.DATA_TRANSFER, wantAgentObj).then(() => {
backgroundTaskManager.startBackgroundRunning(featureAbility.getContext(),
console.info("Operation startBackgroundRunning succeeded");
backgroundTaskManager.BackgroundMode.DATA_TRANSFER, wantAgentObj).then(() => {
}).catch((err) => {
console.info("Operation startBackgroundRunning succeeded");
console.error("Operation startBackgroundRunning failed Cause: " + err);
}).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}`);
}
});
});
```
```
3.
停止长时任务。
3.
停止长时任务。
```ts
```ts
import backgroundTaskManager from '@ohos.
backgroundTaskManager';
import backgroundTaskManager from '@ohos.
resourceschedule.backgroundTaskManager';
backgroundTaskManager.stopBackgroundRunning(this.context).then(() => {
try {
console.info("Operation stopBackgroundRunning succeeded");
backgroundTaskManager.stopBackgroundRunning(featureAbility.getContext()).then(() => {
}).catch((err) => {
console.info("Operation stopBackgroundRunning succeeded");
console.error("Operation stopBackgroundRunning failed Cause: " + err);
}).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}`);
}
```
```
...
@@ -262,7 +303,7 @@ ohos.permission.KEEP_BACKGROUND_RUNNING
...
@@ -262,7 +303,7 @@ ohos.permission.KEEP_BACKGROUND_RUNNING
当需要与后台执行的长时任务交互时(如播放音乐等)。可以采用connectAbility()方法启动并连接Service Ability。在获取到服务的代理对象后,与服务进行通信,控制长时任务的申请和取消。
当需要与后台执行的长时任务交互时(如播放音乐等)。可以采用connectAbility()方法启动并连接Service Ability。在获取到服务的代理对象后,与服务进行通信,控制长时任务的申请和取消。
```
js
```
js
import
backgroundTaskManager
from
'
@ohos.backgroundTaskManager
'
;
import
backgroundTaskManager
from
'
@ohos.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
"
;
...
@@ -371,7 +412,7 @@ Stage模型的相关信息参考[Stage模型综述](../ability/stage-brief.md)
...
@@ -371,7 +412,7 @@ Stage模型的相关信息参考[Stage模型综述](../ability/stage-brief.md)
```
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
'
;
let
mContext
=
null
;
let
mContext
=
null
;
...
@@ -395,21 +436,29 @@ function startContinuousTask() {
...
@@ -395,21 +436,29 @@ function startContinuousTask() {
// 通过wantAgent模块的getWantAgent方法获取WantAgent对象
// 通过wantAgent模块的getWantAgent方法获取WantAgent对象
wantAgent
.
getWantAgent
(
wantAgentInfo
).
then
((
wantAgentObj
)
=>
{
wantAgent
.
getWantAgent
(
wantAgentInfo
).
then
((
wantAgentObj
)
=>
{
backgroundTaskManager
.
startBackgroundRunning
(
mContext
,
try
{
backgroundTaskManager
.
BackgroundMode
.
DATA_TRANSFER
,
wantAgentObj
).
then
(()
=>
{
backgroundTaskManager
.
startBackgroundRunning
(
featureAbility
.
getContext
(),
console
.
info
(
"
Operation startBackgroundRunning succeeded
"
);
backgroundTaskManager
.
BackgroundMode
.
DATA_TRANSFER
,
wantAgentObj
).
then
(()
=>
{
}).
catch
((
err
)
=>
{
console
.
info
(
"
Operation startBackgroundRunning succeeded
"
);
console
.
error
(
"
Operation startBackgroundRunning failed Cause:
"
+
err
);
}).
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
()
{
function
stopContinuousTask
()
{
backgroundTaskManager
.
stopBackgroundRunning
(
mContext
).
then
(()
=>
{
try
{
console
.
info
(
"
Operation stopBackgroundRunning succeeded
"
);
backgroundTaskManager
.
stopBackgroundRunning
(
featureAbility
.
getContext
()).
then
(()
=>
{
}).
catch
((
err
)
=>
{
console
.
info
(
"
Operation stopBackgroundRunning succeeded
"
);
console
.
error
(
"
Operation stopBackgroundRunning failed Cause:
"
+
err
);
}).
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
{
class
MySequenceable
{
...
@@ -494,9 +543,11 @@ export default class BgTaskAbility extends Ability {
...
@@ -494,9 +543,11 @@ export default class BgTaskAbility extends Ability {
**表1**
能效资源申请主要接口
**表1**
能效资源申请主要接口
> **说明:** 后台任务管理错误码见[backgroundTaskManager错误码](../errorcodes/errorcode-backgroundTaskMgr.md)。
| 接口名 | 描述 |
| 接口名 | 描述 |
| ---------------------------------------- | ---------------------------------------- |
| ---------------------------------------- | ---------------------------------------- |
| applyEfficiencyResources(request:
[
EfficiencyResourcesRequest
](
../reference/apis/js-apis-backgroundTaskManager.md#efficiencyresourcesrequest9
)
):
boolean
| 申请能效资源。 |
| applyEfficiencyResources(request:
[
EfficiencyResourcesRequest
](
../reference/apis/js-apis-backgroundTaskManager.md#efficiencyresourcesrequest9
)
):
void
| 申请能效资源。 |
| resetAllEfficiencyResources():void | 释放申请的能效资源。 |
| resetAllEfficiencyResources():void | 释放申请的能效资源。 |
...
@@ -506,7 +557,7 @@ export default class BgTaskAbility extends Ability {
...
@@ -506,7 +557,7 @@ export default class BgTaskAbility extends Ability {
1.
申请能效资源
1.
申请能效资源
```
js
```
js
import
backgroundTaskManager
from
'
@ohos.
backgroundTaskManager
'
;
import
backgroundTaskManager
from
'
@ohos.
resourceschedule.backgroundTaskManager
'
;
let
request
=
{
let
request
=
{
resourceTypes
:
backgroundTaskManager
.
ResourceType
.
CPU
,
resourceTypes
:
backgroundTaskManager
.
ResourceType
.
CPU
,
...
@@ -516,14 +567,18 @@ let request = {
...
@@ -516,14 +567,18 @@ let request = {
isPersist
:
true
,
isPersist
:
true
,
isProcess
:
true
,
isProcess
:
true
,
};
};
let
res
=
backgroundTaskManager
.
applyEfficiencyResources
(
request
);
try
{
console
.
info
(
"
the result of request is:
"
+
res
);
backgroundTaskManager
.
applyEfficiencyResources
(
request
);
console
.
info
(
"
applyEfficiencyResources success.
"
);
}
catch
(
error
)
{
console
.
error
(
`applyEfficiencyResources failed. code is
${
error
.
code
}
message is
${
error
.
message
}
`
);
}
```
```
2.
释放申请的部分资源
2.
释放申请的部分资源
```
js
```
js
import
backgroundTaskManager
from
'
@ohos.
backgroundTaskManager
'
;
import
backgroundTaskManager
from
'
@ohos.
resourceschedule.backgroundTaskManager
'
;
let
request
=
{
let
request
=
{
resourceTypes
:
backgroundTaskManager
.
ResourceType
.
CPU
,
resourceTypes
:
backgroundTaskManager
.
ResourceType
.
CPU
,
...
@@ -531,22 +586,30 @@ let request = {
...
@@ -531,22 +586,30 @@ let request = {
timeOut
:
0
,
timeOut
:
0
,
reason
:
"
reset
"
,
reason
:
"
reset
"
,
};
};
let
res
=
backgroundTaskManager
.
applyEfficiencyResources
(
request
);
try
{
console
.
info
(
"
the result of request is:
"
+
res
);
backgroundTaskManager
.
applyEfficiencyResources
(
request
);
console
.
info
(
"
applyEfficiencyResources success.
"
);
}
catch
(
error
)
{
console
.
error
(
`applyEfficiencyResources failed. code is
${
error
.
code
}
message is
${
error
.
message
}
`
);
}
```
```
3.
释放申请的所有资源
3.
释放申请的所有资源
```
js
```
js
import
backgroundTaskManager
from
'
@ohos.
backgroundTaskManager
'
;
import
backgroundTaskManager
from
'
@ohos.
resourceschedule.backgroundTaskManager
'
;
backgroundTaskManager
.
backgroundTaskManager
.
resetAllEfficiencyResources
();
try
{
backgroundTaskManager
.
backgroundTaskManager
.
resetAllEfficiencyResources
();
}
catch
(
error
)
{
console
.
error
(
`resetAllEfficiencyResources failed. code is
${
error
.
code
}
message is
${
error
.
message
}
`
);
}
```
```
### 开发实例
### 开发实例
```
js
```
js
import
backgroundTaskManager
from
'
@ohos.
backgroundTaskManager
'
;
import
backgroundTaskManager
from
'
@ohos.
resourceschedule.backgroundTaskManager
'
;
// 申请能效资源
// 申请能效资源
let
request
=
{
let
request
=
{
...
@@ -558,8 +621,12 @@ let request = {
...
@@ -558,8 +621,12 @@ let request = {
isPersist
:
true
,
isPersist
:
true
,
isProcess
:
true
,
isProcess
:
true
,
};
};
let
res
=
backgroundTaskManager
.
applyEfficiencyResources
(
request
);
try
{
console
.
info
(
"
the result of request is:
"
+
res
);
backgroundTaskManager
.
applyEfficiencyResources
(
request
);
console
.
info
(
"
applyEfficiencyResources success.
"
);
}
catch
(
error
)
{
console
.
error
(
`applyEfficiencyResources failed. code is
${
error
.
code
}
message is
${
error
.
message
}
`
);
}
// 释放部分资源
// 释放部分资源
request
=
{
request
=
{
...
@@ -568,11 +635,19 @@ request = {
...
@@ -568,11 +635,19 @@ request = {
timeOut
:
0
,
timeOut
:
0
,
reason
:
"
reset
"
,
reason
:
"
reset
"
,
};
};
res
=
backgroundTaskManager
.
applyEfficiencyResources
(
request
);
try
{
console
.
info
(
"
the result of request is:
"
+
res
);
backgroundTaskManager
.
applyEfficiencyResources
(
request
);
console
.
info
(
"
applyEfficiencyResources success.
"
);
}
catch
(
error
)
{
console
.
error
(
`applyEfficiencyResources failed. code is
${
error
.
code
}
message is
${
error
.
message
}
`
);
}
// 释放全部资源
// 释放全部资源
backgroundTaskManager
.
backgroundTaskManager
.
resetAllEfficiencyResources
();
try
{
backgroundTaskManager
.
backgroundTaskManager
.
resetAllEfficiencyResources
();
}
catch
(
error
)
{
console
.
error
(
`resetAllEfficiencyResources failed. code is
${
error
.
code
}
message is
${
error
.
message
}
`
);
}
```
```
## 相关实例
## 相关实例
...
...
zh-cn/application-dev/task-management/work-scheduler-dev-guide.md
浏览文件 @
3aa79ec5
...
@@ -4,11 +4,10 @@
...
@@ -4,11 +4,10 @@
应用要执行对实时性要求不高的任务的时候,比如设备空闲时候做一次数据学习等场景,可以使用延迟调度任务,该机制在满足应用设定条件的时候,会根据系统当前状态,如内存、功耗、温度等统一决策调度时间。延迟任务调度约束见
[
延迟任务调度概述
](
./work-scheduler-overview.md
)
。
应用要执行对实时性要求不高的任务的时候,比如设备空闲时候做一次数据学习等场景,可以使用延迟调度任务,该机制在满足应用设定条件的时候,会根据系统当前状态,如内存、功耗、温度等统一决策调度时间。延迟任务调度约束见
[
延迟任务调度概述
](
./work-scheduler-overview.md
)
。
## 接口说明
## 接口说明
注册相关接口包导入:
注册相关接口包导入:
```
js
```
js
import
workScheduler
from
'
@ohos.workScheduler
'
;
import
workScheduler
from
'
@ohos.
resourceschedule.
workScheduler
'
;
```
```
回调相关接口包导入:
回调相关接口包导入:
...
@@ -20,15 +19,17 @@ import WorkSchedulerExtensionAbility from '@ohos.WorkSchedulerExtensionAbility';
...
@@ -20,15 +19,17 @@ import WorkSchedulerExtensionAbility from '@ohos.WorkSchedulerExtensionAbility';
**表1**
workScheduler主要接口
**表1**
workScheduler主要接口
> **说明:** 延迟任务调度错误码见[workScheduler错误码](../../api/errorcodes/errorcode-workScheduler.md)。
接口名 | 接口描述
接口名 | 接口描述
---------------------------------------------------------|-----------------------------------------
---------------------------------------------------------|-----------------------------------------
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形式)
...
@@ -77,7 +78,7 @@ onWorkStop(work: WorkInfo): void | 延迟调度任务结束回调
...
@@ -77,7 +78,7 @@ onWorkStop(work: WorkInfo): void | 延迟调度任务结束回调
**注册延迟任务**
**注册延迟任务**
import workScheduler from '@ohos.workScheduler';
import workScheduler from '@ohos.
resourceschedule.
workScheduler';
let workInfo = {
let workInfo = {
workId: 1,
workId: 1,
...
@@ -93,14 +94,18 @@ onWorkStop(work: WorkInfo): void | 延迟调度任务结束回调
...
@@ -93,14 +94,18 @@ onWorkStop(work: WorkInfo): void | 延迟调度任务结束回调
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}`);
}
**取消延迟任务**
**取消延迟任务**
import workScheduler from '@ohos.workScheduler';
import workScheduler from '@ohos.
resourceschedule.
workScheduler';
let workInfo = {
let workInfo = {
workId: 1,
workId: 1,
...
@@ -116,83 +121,114 @@ onWorkStop(work: WorkInfo): void | 延迟调度任务结束回调
...
@@ -116,83 +121,114 @@ onWorkStop(work: WorkInfo): void | 延迟调度任务结束回调
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}`);
}
**获取指定延迟任务**
**获取指定延迟任务**
1.
Callback写法
1.
Callback写法
workScheduler.getWorkStatus(50, (err, res) => {
try{
if (err) {
workScheduler.getWorkStatus(50, (error, res) => {
console.info('workschedulerLog getWorkStatus failed, because:' + err.code);
if (error) {
} else {
console.error(`workschedulerLog getWorkStatus failed. code is ${error.code} message is ${error.message}`);
for (let item in res) {
} else {
console.info('workschedulerLog getWorkStatuscallback success,' + item + ' is:' + res[item]);
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}`);
}
2.
Promise写法
2.
Promise写法
workScheduler.getWorkStatus(50).then((res) => {
try{
for (let item in res) {
workScheduler.getWorkStatus(50).then((res) => {
console.info('workschedulerLog getWorkStatus success,' + item + ' is:' + res[item]);
for (let item in res) {
}
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}`);
})
} catch (error) {
console.error(`workschedulerLog getWorkStatus failed. code is ${error.code} message is ${error.message}`);
}
**获取所有延迟任务**
**获取所有延迟任务**
1.
Callback写法
1.
Callback写法
workScheduler.obtainAllWorks((err, res) =>{
try{
if (err) {
workScheduler.obtainAllWorks((error, res) =>{
console.info('workschedulerLog obtainAllWorks failed, because:' + err.code);
if (error) {
} else {
console.error(`workschedulerLog obtainAllWorks failed. code is ${error.code} message is ${error.message}`);
console.info('workschedulerLog obtainAllWorks success, data is:' + JSON.stringify(res));
} 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}`);
}
2.
Promise写法
2.
Promise写法
workScheduler.obtainAllWorks().then((res) => {
try{
console.info('workschedulerLog obtainAllWorks success, data is:' + JSON.stringify(res));
workScheduler.obtainAllWorks().then((res) => {
}).catch((err) => {
console.info(`workschedulerLog obtainAllWorks success, data is: ${JSON.stringify(res)}`);
console.info('workschedulerLog obtainAllWorks failed, because:' + err.code);
}).catch((error) => {
})
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}`);
}
**停止并清除任务**
**停止并清除任务**
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}`);
}
**判断上次执行是否超时**
**判断上次执行是否超时**
1.
Callback写法
1.
Callback写法
workScheduler.isLastWorkTimeOut(500, (err, res) =>{
try{
if (err) {
workScheduler.isLastWorkTimeOut(500, (error, res) =>{
console.info('workschedulerLog isLastWorkTimeOut failed, because:' + err.code);
if (error) {
} else {
onsole.error(`workschedulerLog isLastWorkTimeOut failed. code is ${error.code} message is ${error.message}`);
console.info('workschedulerLog isLastWorkTimeOut success, data is:' + res);
} else {
}
console.info(`workschedulerLog isLastWorkTimeOut success, data is: ${res}`);
});
}
});
} catch (error) {
console.error(`workschedulerLog isLastWorkTimeOut failed. code is ${error.code} message is ${error.message}`);
}
2.
Promise写法
2.
Promise写法
workScheduler.isLastWorkTimeOut(500)
try{
.then(res => {
workScheduler.isLastWorkTimeOut(500)
console.info('workschedulerLog isLastWorkTimeOut success, data is:' + res);
.then(res => {
})
console.info(`workschedulerLog isLastWorkTimeOut success, data is: ${res}`);
.catch(err => {
})
console.info('workschedulerLog isLastWorkTimeOut failed, because:' + err.code);
.catch(error => {
});
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}`);
}
## 相关实例
## 相关实例
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录