0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

鴻蒙開發(fā)接口資源調(diào)度:【@ohos.backgroundTaskManager (后臺(tái)任務(wù)管理)】

jf_46214456 ? 來源:jf_46214456 ? 作者:jf_46214456 ? 2024-06-04 16:43 ? 次閱讀

后臺(tái)任務(wù)管理

本模塊提供后臺(tái)任務(wù)管理能力。

當(dāng)應(yīng)用或業(yè)務(wù)模塊處于后臺(tái)(無可見界面)時(shí),如果有需要繼續(xù)執(zhí)行或者后續(xù)執(zhí)行的業(yè)務(wù),可基于業(yè)務(wù)類型,申請(qǐng)短時(shí)任務(wù)延遲掛起(Suspend)或者長時(shí)任務(wù)避免進(jìn)入掛起狀態(tài)。

應(yīng)用有不可中斷且短時(shí)間能完成的任務(wù)時(shí)(如,用戶在文件管理器上點(diǎn)擊垃圾文件清理,若清理未完成時(shí)退到后臺(tái),文件管理器需要申請(qǐng)短時(shí)任務(wù)完成清理),可以使用短時(shí)任務(wù)機(jī)制。

應(yīng)用中存在用戶能夠直觀感受到的且需要一直在后臺(tái)運(yùn)行的業(yè)務(wù)時(shí)(如,后臺(tái)播放音樂),可以使用長時(shí)任務(wù)機(jī)制。

icon-note.gif說明: 本模塊首批接口從API version 7開始支持。后續(xù)版本的新增接口,采用上角標(biāo)單獨(dú)標(biāo)記接口的起始版本。 開發(fā)前請(qǐng)熟悉鴻蒙開發(fā)指導(dǎo)文檔 :[gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md]

導(dǎo)入模塊

import backgroundTaskManager from '@ohos.backgroundTaskManager';

backgroundTaskManager.requestSuspendDelay

requestSuspendDelay(reason: string, callback: Callback): DelaySuspendInfo

后臺(tái)應(yīng)用申請(qǐng)延遲掛起。

延遲掛起時(shí)間一般情況下默認(rèn)值為180000,低電量(依據(jù)系統(tǒng)低電量廣播)時(shí)默認(rèn)值為60000。

系統(tǒng)能力: SystemCapability.ResourceSchedule.BackgroundTaskManager.TransientTask

參數(shù)

參數(shù)名類型必填說明
reasonstring延遲掛起申請(qǐng)的原因。
callbackCallback延遲即將超時(shí)的回調(diào)函數(shù),一般在超時(shí)前6秒通過此回調(diào)通知應(yīng)用。

返回值

類型說明
[DelaySuspendInfo]返回延遲掛起信息。

示例

let myReason = 'test requestSuspendDelay';
let delayInfo = backgroundTaskManager.requestSuspendDelay(myReason, () = > {
    console.info("Request suspension delay will time out.");
})

var id = delayInfo.requestId;
var time = delayInfo.actualDelayTime;
console.info("The requestId is: " + id);
console.info("The actualDelayTime is: " + time);

backgroundTaskManager.getRemainingDelayTime

getRemainingDelayTime(requestId: number, callback: AsyncCallback): void

獲取應(yīng)用程序進(jìn)入掛起狀態(tài)前的剩余時(shí)間,使用callback形式返回。

系統(tǒng)能力: SystemCapability.ResourceSchedule.BackgroundTaskManager.TransientTask

參數(shù)

參數(shù)名類型必填說明
requestIdnumber延遲掛起的請(qǐng)求ID。
callbackAsyncCallback指定的callback回調(diào)方法。用于返回應(yīng)用程序進(jìn)入掛起狀態(tài)之前的剩余時(shí)間,以毫秒為單位。

示例

let id = 1;
backgroundTaskManager.getRemainingDelayTime(id, (err, res) = > {
    if(err) {
        console.log('callback = > Operation getRemainingDelayTime failed. Cause: ' + err.code);
    } else {
        console.log('callback = > Operation getRemainingDelayTime succeeded. Data: ' + JSON.stringify(res));
    }
})

backgroundTaskManager.getRemainingDelayTime

getRemainingDelayTime(requestId: number): Promise

獲取應(yīng)用程序進(jìn)入掛起狀態(tài)前的剩余時(shí)間,使用Promise形式返回。

系統(tǒng)能力: SystemCapability.ResourceSchedule.BackgroundTaskManager.TransientTask

參數(shù)

參數(shù)名類型必填說明
requestIdnumber延遲掛起的請(qǐng)求ID。

返回值

類型說明
Promise指定的Promise回調(diào)方法。返回應(yīng)用程序進(jìn)入掛起狀態(tài)之前的剩余時(shí)間,以毫秒為單位。

示例

let id = 1;
backgroundTaskManager.getRemainingDelayTime(id).then( res = > {
    console.log('promise = > Operation getRemainingDelayTime succeeded. Data: ' + JSON.stringify(res));
}).catch( err = > {
    console.log('promise = > Operation getRemainingDelayTime failed. Cause: ' + err.code);
})

backgroundTaskManager.cancelSuspendDelay

cancelSuspendDelay(requestId: number): void

取消延遲掛起。

系統(tǒng)能力: SystemCapability.ResourceSchedule.BackgroundTaskManager.TransientTask

參數(shù)

參數(shù)名類型必填說明
requestIdnumber延遲掛起的請(qǐng)求ID。

示例

let id = 1;
backgroundTaskManager.cancelSuspendDelay(id);

backgroundTaskManager.startBackgroundRunning8+

startBackgroundRunning(context: Context, bgMode: BackgroundMode, wantAgent: WantAgent, callback: AsyncCallback): void

向系統(tǒng)申請(qǐng)長時(shí)任務(wù),使用callback形式返回結(jié)果。

需要權(quán)限: ohos.permission.KEEP_BACKGROUND_RUNNING

系統(tǒng)能力: SystemCapability.ResourceSchedule.BackgroundTaskManager.ContinuousTask

參數(shù)

參數(shù)名類型必填說明
context[Context]應(yīng)用運(yùn)行的上下文。
bgMode[BackgroundMode]向系統(tǒng)申請(qǐng)的后臺(tái)模式。
wantAgent[WantAgent]通知參數(shù),用于指定長時(shí)任務(wù)通知點(diǎn)擊后跳轉(zhuǎn)的界面。
callbackAsyncCallbackcallback形式返回啟動(dòng)長時(shí)任務(wù)的結(jié)果。

示例

import backgroundTaskManager from '@ohos.backgroundTaskManager';
import featureAbility from '@ohos.ability.featureAbility';
import wantAgent from '@ohos.wantAgent';

function callback(err, data) {
    if (err) {
        console.error("Operation startBackgroundRunning failed Cause: " + err);
    } else {
        console.info("Operation startBackgroundRunning succeeded");
    }
}

let wantAgentInfo = {
    wants: [
        {
            bundleName: "com.example.myapplication",
            abilityName: "com.example.myapplication.MainAbility"
        }
    ],
    operationType: wantAgent.OperationType.START_ABILITY,
    requestCode: 0,
    wantAgentFlags: [wantAgent.WantAgentFlags.UPDATE_PRESENT_FLAG]
};

wantAgent.getWantAgent(wantAgentInfo).then((wantAgentObj) = > {
    backgroundTaskManager.startBackgroundRunning(featureAbility.getContext(),
        backgroundTaskManager.BackgroundMode.DATA_TRANSFER, wantAgentObj, callback)
});

backgroundTaskManager.startBackgroundRunning8+

startBackgroundRunning(context: Context, bgMode: BackgroundMode, wantAgent: WantAgent): Promise

向系統(tǒng)申請(qǐng)長時(shí)任務(wù),使用promise形式返回結(jié)果。

需要權(quán)限: ohos.permission.KEEP_BACKGROUND_RUNNING

系統(tǒng)能力: SystemCapability.ResourceSchedule.BackgroundTaskManager.ContinuousTask

參數(shù)

參數(shù)名類型必填說明
context[Context]應(yīng)用運(yùn)行的上下文。
bgMode[BackgroundMode]向系統(tǒng)申請(qǐng)的后臺(tái)模式。
wantAgent[WantAgent]通知參數(shù),用于指定長時(shí)任務(wù)通知點(diǎn)擊跳轉(zhuǎn)的界面。

返回值

類型說明
Promise使用Promise形式返回結(jié)果。

示例

import backgroundTaskManager from '@ohos.backgroundTaskManager';
import featureAbility from '@ohos.ability.featureAbility';
import wantAgent from '@ohos.wantAgent';

let wantAgentInfo = {
    wants: [
        {
            bundleName: "com.example.myapplication",
            abilityName: "com.example.myapplication.MainAbility"
        }
    ],
    operationType: wantAgent.OperationType.START_ABILITY,
    requestCode: 0,
    wantAgentFlags: [wantAgent.WantAgentFlags.UPDATE_PRESENT_FLAG]
};

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);
    });
});

backgroundTaskManager.stopBackgroundRunning8+

stopBackgroundRunning(context: Context, callback: AsyncCallback): void

向系統(tǒng)申請(qǐng)取消長時(shí)任務(wù),使用callback形式返回結(jié)果。

系統(tǒng)能力: SystemCapability.ResourceSchedule.BackgroundTaskManager.ContinuousTask

參數(shù)

參數(shù)名類型必填說明
context[Context]應(yīng)用運(yùn)行的上下文。
callbackAsyncCallbackcallback形式返回啟動(dòng)長時(shí)任務(wù)的結(jié)果。

示例

import backgroundTaskManager from '@ohos.backgroundTaskManager';
import featureAbility from '@ohos.ability.featureAbility';

function callback(err, data) {
    if (err) {
        console.error("Operation stopBackgroundRunning failed Cause: " + err);
    } else {
        console.info("Operation stopBackgroundRunning succeeded");
    }
}

backgroundTaskManager.stopBackgroundRunning(featureAbility.getContext(), callback);

backgroundTaskManager.stopBackgroundRunning8+

stopBackgroundRunning(context: Context): Promise

向系統(tǒng)申請(qǐng)取消長時(shí)任務(wù),使用promise形式返回結(jié)果。

系統(tǒng)能力: SystemCapability.ResourceSchedule.BackgroundTaskManager.ContinuousTask

參數(shù)

參數(shù)名類型必填說明
context[Context]應(yīng)用運(yùn)行的上下文。

返回值

類型說明
Promise使用Promise形式返回結(jié)果。

示例

import backgroundTaskManager from '@ohos.backgroundTaskManager';
import featureAbility from '@ohos.ability.featureAbility';

backgroundTaskManager.stopBackgroundRunning(featureAbility.getContext()).then(() = > {
    console.info("Operation stopBackgroundRunning succeeded");
}).catch((err) = > {
    console.error("Operation stopBackgroundRunning failed Cause: " + err);
});

DelaySuspendInfo

延遲掛起信息。

系統(tǒng)能力: 以下各項(xiàng)對(duì)應(yīng)的系統(tǒng)能力均為SystemCapability.ResourceSchedule.BackgroundTaskManager.TransientTask

參數(shù)名類型必填說明
requestIdnumber延遲掛起的請(qǐng)求ID。
actualDelayTimenumber應(yīng)用的實(shí)際掛起延遲時(shí)間,以毫秒為單位。 一般情況下默認(rèn)值為180000,低電量(依據(jù)系統(tǒng)低電量廣播)時(shí)默認(rèn)值為60000。

BackgroundMode8+

系統(tǒng)能力: 以下各項(xiàng)對(duì)應(yīng)的系統(tǒng)能力均為SystemCapability.ResourceSchedule.BackgroundTaskManager.ContinuousTask

搜狗高速瀏覽器截圖20240326151450.png

參數(shù)名參數(shù)值描述HarmonyOSOpenHarmony鴻蒙文檔籽料:mau123789是v直接拿
DATA_TRANSFER1數(shù)據(jù)傳輸
AUDIO_PLAYBACK2音頻播放
AUDIO_RECORDING3錄音
LOCATION4定位導(dǎo)航
BLUETOOTH_INTERACTION5藍(lán)牙相關(guān)
MULTI_DEVICE_CONNECTION6多設(shè)備互聯(lián)
WIFI_INTERACTION7WLAN相關(guān) 系統(tǒng)API :此接口為系統(tǒng)接口,三方應(yīng)用不支持調(diào)用。
VOIP8音視頻通話 系統(tǒng)API :此接口為系統(tǒng)接口,三方應(yīng)用不支持調(diào)用。
TASK_KEEPING9計(jì)算任務(wù)(僅在特定設(shè)備生效)

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 接口
    +關(guān)注

    關(guān)注

    33

    文章

    8605

    瀏覽量

    151198
  • 鴻蒙
    +關(guān)注

    關(guān)注

    57

    文章

    2352

    瀏覽量

    42863
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    鴻蒙開發(fā)接口資源管理:【@ohos.resourceManager (資源管理)】

    資源管理模塊,根據(jù)當(dāng)前configuration(語言,區(qū)域,橫豎屏,mccmnc)和device capability(設(shè)備類型,分辨率)提供獲取應(yīng)用資源信息讀取接口。
    的頭像 發(fā)表于 06-03 15:10 ?1138次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>開發(fā)</b><b class='flag-5'>接口</b><b class='flag-5'>資源管理</b>:【@<b class='flag-5'>ohos</b>.resourceManager (<b class='flag-5'>資源管理</b>)】

    鴻蒙開發(fā)接口資源調(diào)度:【@ohos.workScheduler (延遲任務(wù)調(diào)度)】

    開發(fā)者在開發(fā)應(yīng)用時(shí),通過調(diào)用延遲任務(wù)注冊(cè)接口,注冊(cè)對(duì)實(shí)時(shí)性要求不高的延遲任務(wù),該任務(wù)默認(rèn)由系統(tǒng)安
    的頭像 發(fā)表于 06-04 10:01 ?924次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>開發(fā)</b><b class='flag-5'>接口</b><b class='flag-5'>資源</b><b class='flag-5'>調(diào)度</b>:【@<b class='flag-5'>ohos</b>.workScheduler (延遲<b class='flag-5'>任務(wù)</b><b class='flag-5'>調(diào)度</b>)】

    鴻蒙原生應(yīng)用/元服務(wù)開發(fā)-短時(shí)任務(wù)

    短時(shí)任務(wù)。同時(shí),系統(tǒng)提供獲取對(duì)應(yīng)短時(shí)任務(wù)剩余時(shí)間的查詢接口,用以查詢本次短時(shí)任務(wù)剩余時(shí)間,以確認(rèn)是否繼續(xù)運(yùn)行其他業(yè)務(wù)。 ·配額計(jì)算:僅當(dāng)應(yīng)用在后臺(tái)
    發(fā)表于 12-28 16:13

    鴻蒙原生應(yīng)用/元服務(wù)開發(fā)-長時(shí)任務(wù)

    音樂,系統(tǒng)則會(huì)終止對(duì)應(yīng)的進(jìn)程。 接口說明:主要接口:代碼開發(fā):stage模型下 1.申請(qǐng)ohos.permission.KEEP_BACKGROUND_RUNNING權(quán)限,配置方式請(qǐng)參
    發(fā)表于 01-09 10:52

    鴻蒙原生應(yīng)用/元服務(wù)開發(fā)-延遲任務(wù)說明(一)

    ) @ohos.backgroundTaskManager (后臺(tái)任務(wù)管理) @ohos.multimedia.audio (音頻管理) @
    發(fā)表于 01-16 14:57

    labview后臺(tái)任務(wù)的例程

    哪位高手有l(wèi)abview后臺(tái)任務(wù)的例程????
    發(fā)表于 11-07 19:51

    怎樣通過定時(shí)器去控制后臺(tái)任務(wù)

    通過定時(shí)器控制后臺(tái)任務(wù),每5ms執(zhí)行切換一個(gè)任務(wù),根據(jù)事件類型可以區(qū)分不同類型的任務(wù),對(duì)于外界按鍵類的操作響應(yīng),只有當(dāng)前任務(wù)會(huì)做出響應(yīng),除當(dāng)前任務(wù)
    發(fā)表于 01-07 07:27

    請(qǐng)問鴻蒙智能穿戴設(shè)備如何保持后臺(tái)任務(wù)定時(shí)獲取網(wǎng)絡(luò)數(shù)據(jù)?

    ;ohos.permission.SET_WIFI_INFO"},{ "name": "ohos.permission.GET_WIFI_INFO"}]無法滿足業(yè)務(wù)業(yè)務(wù)要求:應(yīng)用退后臺(tái)后,間隔
    發(fā)表于 04-25 10:19

    請(qǐng)問鴻蒙智能穿戴設(shè)備怎樣保持后臺(tái)任務(wù)定時(shí)獲取網(wǎng)絡(luò)數(shù)據(jù)?

    ”:“ohos.permission.SET_WIFI_INFO”},{“名稱”:“ohos.permission.GET_WIFI_INFO”}]無法滿足業(yè)務(wù)業(yè)務(wù)要求:應(yīng)用退后臺(tái)后,間隔30秒獲取一次網(wǎng)絡(luò)數(shù)據(jù)
    發(fā)表于 05-16 14:53

    HarmonyOS后臺(tái)任務(wù)管理開發(fā)指南上線!

    的 HarmonyOS 后臺(tái)任務(wù)管理開發(fā)指南上新內(nèi)容,希望能夠幫助開發(fā)者更高效地探索、體驗(yàn)、上手 HarmonyOS。 同時(shí),我們十分重視開發(fā)
    發(fā)表于 11-29 09:58

    記錄儀實(shí)時(shí)多任務(wù)調(diào)度策略的研究

    的。應(yīng)用程序運(yùn)行在該管理器程序之上。后臺(tái)根據(jù)各個(gè)任務(wù)的要求,進(jìn)行資源管理、消息管理、任務(wù)
    發(fā)表于 12-01 04:00 ?326次閱讀
     記錄儀實(shí)時(shí)多<b class='flag-5'>任務(wù)</b><b class='flag-5'>調(diào)度</b>策略的研究

    LabVIEW教程之后臺(tái)任務(wù)的詳細(xì)資料說明

    有一些任務(wù)在運(yùn)行的時(shí)候,并不需要與用戶交互。它們通常在不打擾用戶其它工作的時(shí)候默默的執(zhí)行。這樣的任務(wù)后臺(tái)任務(wù)。與之對(duì)比,前臺(tái)任務(wù)就是用戶看得見的。
    發(fā)表于 05-07 16:42 ?5次下載
    LabVIEW教程之<b class='flag-5'>后臺(tái)任務(wù)</b>的詳細(xì)資料說明

    HarmonyOS后臺(tái)任務(wù)管理開發(fā)指南上線!

    為什么要使用后臺(tái)任務(wù)?開發(fā)過程中如何選擇合適的后臺(tái)任務(wù)?后臺(tái)任務(wù)申請(qǐng)時(shí)存在哪些約束與限制? 針對(duì)開發(fā)者使用
    的頭像 發(fā)表于 11-28 21:10 ?735次閱讀
    HarmonyOS<b class='flag-5'>后臺(tái)任務(wù)</b><b class='flag-5'>管理</b><b class='flag-5'>開發(fā)</b>指南上線!

    怎么在CentOS中后臺(tái)運(yùn)行、關(guān)閉和查看后臺(tái)任務(wù)?

    怎么在CentOS中后臺(tái)運(yùn)行、關(guān)閉和查看后臺(tái)任務(wù)?
    的頭像 發(fā)表于 12-18 17:34 ?3719次閱讀

    鴻蒙OS 分布式任務(wù)調(diào)度

    鴻蒙OS 分布式任務(wù)調(diào)度概述 在 HarmonyO S中,分布式任務(wù)調(diào)度平臺(tái)對(duì)搭載 HarmonyOS 的多設(shè)備構(gòu)筑的“超級(jí)虛擬終端”提供統(tǒng)
    的頭像 發(fā)表于 01-29 16:50 ?502次閱讀