Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
ec952c93
D
Docs
项目概览
OpenHarmony
/
Docs
大约 1 年 前同步成功
通知
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看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
ec952c93
编写于
1月 03, 2023
作者:
O
openharmony_ci
提交者:
Gitee
1月 03, 2023
浏览文件
操作
浏览文件
下载
差异文件
!12855 短时任务文档优化
Merge pull request !12855 from 廖康康/cherry-pick-1671785325
上级
2a636972
eaabe5c6
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
41 addition
and
34 deletion
+41
-34
zh-cn/application-dev/task-management/transient-task-dev-guide.md
...plication-dev/task-management/transient-task-dev-guide.md
+41
-34
未找到文件。
zh-cn/application-dev/task-management/transient-task-dev-guide.md
浏览文件 @
ec952c93
...
...
@@ -28,57 +28,64 @@
1、当应用需要开始执行一个耗时的任务时。调用短时任务申请接口,并且在任务执行完后,调用短时任务取消接口。
```
js
import
backgroundTaskManager
from
'
@ohos.backgroundTaskManager
'
;
import
backgroundTaskManager
from
'
@ohos.
resourceschedule.
backgroundTaskManager
'
;
let
delayInfo
;
let
id
;
let
id
;
// 申请延迟挂起任务ID
let
delayTime
;
// 本次申请延迟挂起任务的剩余时间
// 申请延迟挂起
function
requestSuspendDelay
()
{
let
myReason
=
'
test requestSuspendDelay
'
;
delayInfo
=
backgroundTaskManager
.
requestSuspendDelay
(
myReason
,
()
=>
{
console
.
info
(
"
Request suspension delay will time out.
"
);
// 此回调函数执行,表示应用的延迟挂起申请即将超时,应用需要执行一些清理和标注工作。
});
let
myReason
=
'
test requestSuspendDelay
'
;
// 申请原因
try
{
let
delayInfo
=
backgroundTaskManager
.
requestSuspendDelay
(
myReason
,
()
=>
{
// 此回调函数执行,表示应用的延迟挂起申请即将超时,应用需要执行一些清理和标注工作,并取消延时挂起
console
.
info
(
"
[backgroundTaskManager] Request suspension delay will time out.
"
);
backgroundTaskManager
.
cancelSuspendDelay
(
id
);
})
id
=
delayInfo
.
requestId
;
console
.
info
(
"
requestId is:
"
+
id
);
delayTime
=
delayInfo
.
actualDelayTime
;
console
.
info
(
"
[backgroundTaskManager] The requestId is:
"
+
id
);
console
.
info
(
"
[backgroundTaskManager]The actualDelayTime is:
"
+
delayTime
);
}
catch
(
error
)
{
console
.
error
(
`[backgroundTaskManager] requestSuspendDelay failed. code is
${
error
.
code
}
message is
${
error
.
message
}
`
);
}
}
// 获取进入挂起前的剩余时间
function
getRemainingDelayTime
()
{
let
delayTime
=
0
;
backgroundTaskManager
.
getRemainingDelayTime
(
id
).
then
((
res
)
=>
{
console
.
log
(
'
promise => Operation getRemainingDelayTime succeeded. Data:
'
+
JSON
.
stringify
(
res
));
delayTime
=
res
;
}).
catch
((
err
)
=>
{
console
.
log
(
'
promise => Operation getRemainingDelayTime failed. Cause:
'
+
err
.
code
);
});
return
delayTime
;
async
function
getRemainingDelayTime
()
{
try
{
await
backgroundTaskManager
.
getRemainingDelayTime
(
id
).
then
(
res
=>
{
console
.
log
(
'
[backgroundTaskManager] promise => Operation getRemainingDelayTime succeeded. Data:
'
+
JSON
.
stringify
(
res
));
}).
catch
(
error
=>
{
console
.
error
(
`[backgroundTaskManager] promise => Operation getRemainingDelayTime failed. code is
${
error
.
code
}
message is
${
error
.
message
}
`
);
})
}
catch
(
error
)
{
console
.
error
(
`[backgroundTaskManager] promise => Operation getRemainingDelayTime failed. code is
${
error
.
code
}
message is
${
error
.
message
}
`
);
}
}
// 取消延迟挂起
function
cancelSuspendDelay
()
{
backgroundTaskManager
.
cancelSuspendDelay
(
id
);
backgroundTaskManager
.
cancelSuspendDelay
(
id
);
}
function
performingLongRunningTask
()
{
// 在执行具体的耗时任务前,调用短时任务申请接口。向系统申请延迟挂起,延长应用的后台执行时间。
requestSuspendDelay
();
// 通过剩余时间查询接口,获取可用时间配额。
let
delayTime
=
getRemainingDelayTime
();
async
function
performingLongRunningTask
()
{
// 在执行具体的耗时任务前,调用短时任务申请接口。向系统申请延迟挂起,延长应用的后台执行时间。
requestSuspendDelay
();
if
(
delayTime
<
0
)
{
// 如果时间配置少于一定的大小,考虑取消此次耗时操作
。
// 处理短时任务配额时间不够的场景
// 根据需要,通过剩余时间查询接口,获取可用时间配额
。
await
getRemainingDelayTime
();
cancelSuspendDelay
();
return
;
}
if
(
delayTime
<
0
)
{
// 如果时间配置少于一定的大小,考虑取消此次耗时操作。
// 处理短时任务配额时间不够的场景
cancelSuspendDelay
();
return
;
}
// 此处执行具体的耗时任务。
// 此处执行具体的耗时任务
// 耗时任务执行完,调用短时任务取消接口,避免配额浪费。
cancelSuspendDelay
();
// 耗时任务执行完,调用短时任务取消接口,避免配额浪费
cancelSuspendDelay
();
}
```
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录