Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
97c55e00
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看板
提交
97c55e00
编写于
2月 18, 2022
作者:
陈
陈明
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
添加延迟任务调度开发者指南
Signed-off-by:
N
陈明
<
chenming48@huawei.com
>
上级
f018c0d9
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
203 addition
and
0 deletion
+203
-0
zh-cn/application-dev/work-scheduler/Readme-CN.md
zh-cn/application-dev/work-scheduler/Readme-CN.md
+5
-0
zh-cn/application-dev/work-scheduler/work-scheduler-dev-guide.md
...pplication-dev/work-scheduler/work-scheduler-dev-guide.md
+178
-0
zh-cn/application-dev/work-scheduler/work-scheduler-overview.md
...application-dev/work-scheduler/work-scheduler-overview.md
+20
-0
未找到文件。
zh-cn/application-dev/work-scheduler/Readme-CN.md
0 → 100644
浏览文件 @
97c55e00
# 延迟任务调度
-
后台任务
-
[
延迟任务调度概述
](
work-scheduler-overview.md
)
-
[
延迟任务调度开发指导
](
work-scheduler-dev-guide.md
)
\ No newline at end of file
zh-cn/application-dev/work-scheduler/work-scheduler-dev-guide.md
0 → 100644
浏览文件 @
97c55e00
# 延迟任务调度开发指导
## 场景介绍
应用要执行对实时性要求不高的任务的时候,比如设备空闲时候做一次数据学习等场景,可以使用延迟调度任务,该机制在满足应用设定条件的时候,会根据系统当前状态,如内存、功耗、热等统一决策调度时间。
## 接口说明
注册等相关接口:
```
js
import
workScheduler
from
'
@ohos.workScheduler
'
;
```
回调接口:
```
js
import
WorkSchedulerExtension
from
'
@ohos.WorkSchedulerExtension
'
;
```
## 延迟任务调度
**表1**
workScheduler主要接口
接口名 | 接口描述
---------------------------------------------------------|-----------------------------------------
function startWork(work: WorkInfo): boolean; | 延迟调度任务申请
function stopWork(work: WorkInfo, needCancel?: boolean): boolean; | 延迟调度任务取消
function getWorkStatus(workId: number, callback: AsyncCallback
<WorkInfo>
): void;| 获取延迟调度任务状态(Callback形式)
function getWorkStatus(workId: number): Promise
<WorkInfo>
; | 获取延迟调度任务状态(Promise形式)
function obtainAllWorks(callback: AsyncCallback
<void>
): Array
<WorkInfo>
;| 获取所有延迟调度任务(Callback形式)
function obtainAllWorks(): Promise
<Array
<
WorkInfo
>
>;| 获取所有延迟调度任务(Promise形式)
function stopAndClearWorks(): boolean;| 停止并清除任务
function isLastWorkTimeOut(workId: number, callback: AsyncCallback
<void>
): boolean;| 获取上次任务是否超时(针对RepeatWork,Callback形式)
function isLastWorkTimeOut(workId: number): Promise
<boolean>
;| 获取上次任务是否超时(针对RepeatWork,Promise形式)
**表2**
WorkInfo包含参数
接口名|描述|类型
---------------------------------------------------------|-----------------------------------------|---------------------------------------------------------
workId | 延迟任务Id(必填)|number
bundleName | 延迟任务包名(必填)|string
abilityName | 延迟任务回调通知的组件名(必填)|string
networkType | 网络条件 | NetworkType
isCharging | 是否充电 | bool
chargerType | 充电类型 | ChargingType
batteryLevel | 电量| number
batteryStatus| 电池状态| BatteryStatus
storageRequest|存储状态| StorageRequest
isRepeat|是否循环任务| boolean
repeatCycleTime |循环间隔| number
repeatCount |循环次数| number
**表3**
延迟任务回调接口
接口名 | 接口描述
---------------------------------------------------------|-----------------------------------------
function onWorkStart(work: WorkInfo): void; | 延迟调度任务开始回调
function onWorkStop(work: WorkInfo): void; | 延迟调度任务结束回调
## 开发步骤
**开发对应的Extension**
import WorkSchedulerExtension from '@ohos.WorkSchedulerExtension';
export default class MyWorkSchedulerExtension extends WorkSchedulerExtension {
onWorkStart(workInfo) {
console.log('MyWorkSchedulerExtension onWorkStart' + JSON.stringify(workInfo));
}
onWorkStop(workInfo) {
console.log('MyWorkSchedulerExtension onWorkStop enter');
console.log('MyWorkSchedulerExtension onWorkStop' + JSON.stringify(workInfo));
}
}
**注册延迟任务**
import workScheduler from '@ohos.workScheduler';
let workInfo = {
workId: 1,
batteryLevel:50,
batteryStatus:workScheduler.BatteryStatus.BATTERY_STATUS_LOW,
isRepeat: false,
isPersisted: true,
bundleName: "com.example.myapplication",
abilityName: "MyExtension"
}
var res = workScheduler.startWork(workInfo);
console.info("workschedulerLog res:" + res);
**取消延迟任务**
import workScheduler from '@ohos.workScheduler';
let workInfo = {
workId: 1,
batteryLevel:50,
batteryStatus:workScheduler.BatteryStatus.BATTERY_STATUS_LOW,
isRepeat: false,
isPersisted: true,
bundleName: "com.example.myapplication",
abilityName: "MyExtension"
}
var res = workScheduler.stopWork(workInfo);
console.info("workschedulerLog res:" + res);
**获取指定延迟任务**
import workScheduler from '@ohos.workScheduler';
workScheduler.getWorkStatus(50, (err, res) => {
if (err) {
console.info('workschedulerLog getWorkStatus callback failed, because:' + err.data);
} else {
for (let item in res) {
console.info('workschedulerLog getWorkStatuscallback success,' + item + ' is:' + res[item]);
}
}
});
workScheduler.getWorkStatus(50).then((res) => {
for (let item in res) {
console.info('workschedulerLog getWorkStatuscallback success,' + item + ' is:' + res[item]);
}
}).catch((err) => {
console.info('workschedulerLog getWorkStatus promise failed, err');
console.info('workschedulerLog getWorkStatus promise failed, because:' + err.data);
})
**获取所有延迟任务**
workScheduler.obtainAllWorks((err, res) =>{
if (err) {
console.info('workschedulerLog getWorkStatus promise failed, err');
console.info('workschedulerLog getWorkStatus promise failed, because:' + err.data);
} else {
console.info('workschedulerLog obtainAllWorks callback success, data is:' + JSON.stringify(res));
}
});
workScheduler.obtainAllWorks().then((res) => {
console.info('workschedulerLog obtainAllWorks promise success, data is:' + JSON.stringify(res));
}).catch((err) => {
console.info('workschedulerLog obtainAllWorks promise failed, because:' + err.data);
})
**停止并清除任务**
let res = workScheduler.stopAndClearWorks();
console.info("workschedulerLog res:" + res);
**判断上次执行是否超时**
workScheduler.isLastWorkTimeOut(500, (err, res) =>{
if (err) {
console.info('workschedulerLog isLastWorkTimeOut callback failed, because:' + err.data);
} else {
console.info('workschedulerLog isLastWorkTimeOut callback success, data is:' + res);
}
});
workScheduler.isLastWorkTimeOut(500)
.then(res => {
console.info('workschedulerLog isLastWorkTimeOut promise success, data is:' + res);
})
.catch(err => {
console.info('workschedulerLog isLastWorkTimeOut promise failed, because:' + err.data);
});
})
\ No newline at end of file
zh-cn/application-dev/work-scheduler/work-scheduler-overview.md
0 → 100644
浏览文件 @
97c55e00
# 延迟任务调度概述
延迟任务调度部件给应用提供一个可以执行实时性不高的任务的机制。当满足设定条件时,会被放入可执行队列,系统根据设备情况,延迟触发可执行队列内的任务。
## 使用说明
应用要执行对实时性要求不高的任务的时候,比如设备空闲时候做一次数据学习等场景,可以使用延迟调度任务,该机制在满足应用设定条件的时候,会根据系统当前状态,如内存、功耗、热等统一决策调度时间。
## 延迟任务调度约束
延迟调度任务的使用需要遵从如下约束和规则:
-
**超时**
:每次最长运行120秒,超时之后,系统会主动停止。
-
**WorkInfo设置参数约束**
(1) workId、bundleName、abilityName为必填项,bundleName必须填本应用,否则校验失败。
(2)至少要设置一个满足的条件。
(3)重复任务时间间隔至少20分钟,当设置重复任务时间间隔时,必须设置始终重复和重复次数中的一个。
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录