From 8ebc76e25c86c29e3a631bb5af5c05458806de5a Mon Sep 17 00:00:00 2001 From: zyjhandsome Date: Fri, 23 Dec 2022 07:09:43 +0000 Subject: [PATCH] =?UTF-8?q?update=20zh-cn/application-dev/task-management/?= =?UTF-8?q?transient-task-dev-guide.md.=20=E7=9F=AD=E6=97=B6=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E5=86=85=E5=AE=B9=E4=BC=98=E5=8C=96=EF=BC=8C=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E4=B8=BA=E6=9C=80=E6=96=B0=E7=9A=84API=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit start build Signed-off-by: zyjhandsome --- .../transient-task-dev-guide.md | 75 ++++++++++--------- 1 file changed, 41 insertions(+), 34 deletions(-) diff --git a/zh-cn/application-dev/task-management/transient-task-dev-guide.md b/zh-cn/application-dev/task-management/transient-task-dev-guide.md index 18c3030bfe..dd24e2ff22 100644 --- a/zh-cn/application-dev/task-management/transient-task-dev-guide.md +++ b/zh-cn/application-dev/task-management/transient-task-dev-guide.md @@ -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(); } ``` -- GitLab