W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
本模塊提供后臺任務(wù)管理能力。
當(dāng)應(yīng)用或業(yè)務(wù)模塊處于后臺(無可見界面)時,如果有需要繼續(xù)執(zhí)行或者后續(xù)執(zhí)行的業(yè)務(wù),可基于業(yè)務(wù)類型,申請短時任務(wù)延遲掛起(Suspend)或者長時任務(wù)避免進(jìn)入掛起狀態(tài)。
應(yīng)用有不可中斷且短時間能完成的任務(wù)時(如,用戶在文件管理器上點擊垃圾文件清理,若清理未完成時退到后臺,文件管理器需要申請短時任務(wù)完成清理),可以使用短時任務(wù)機(jī)制。
應(yīng)用中存在用戶能夠直觀感受到的且需要一直在后臺運行的業(yè)務(wù)時(如,后臺播放音樂),可以使用長時任務(wù)機(jī)制。
對于系統(tǒng)特權(quán)應(yīng)用,提供獨立的能效資源申請接口。系統(tǒng)特權(quán)應(yīng)用如果需要使用特定的系統(tǒng)資源,例如在被掛起期間仍然能夠收到系統(tǒng)公共事件,可以使用能效資源申請接口。
requestSuspendDelay(reason: string, callback: Callback<void>): DelaySuspendInfo
后臺應(yīng)用申請延遲掛起。
延遲掛起時間一般情況下默認(rèn)值為3分鐘,低電量(依據(jù)系統(tǒng)低電量廣播)時默認(rèn)值為1分鐘。
系統(tǒng)能力: SystemCapability.ResourceSchedule.BackgroundTaskManager.TransientTask
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
reason | string | 是 | 延遲掛起申請的原因。 |
callback | Callback<void> | 是 | 延遲即將超時的回調(diào)函數(shù),一般在超時前6秒通過此回調(diào)通知應(yīng)用。 |
返回值:
類型 | 說明 |
---|---|
返回延遲掛起信息。 |
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見@ohos.resourceschedule.backgroundTaskManager (后臺任務(wù)管理)錯誤碼。
錯誤碼ID | 錯誤信息 |
---|---|
9800001 | Memory operation failed. |
9800002 | Parcel operation failed. |
9800003 | Inner transact failed. |
9800004 | System service operation failed. |
9900001 | Caller information verification failed. |
9900002 | Background task verification failed. |
示例:
- import backgroundTaskManager from '@ohos.resourceschedule.backgroundTaskManager';
- let myReason = 'test requestSuspendDelay';
- try {
- 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);
- } catch (error) {
- console.error(`requestSuspendDelay failed. code is ${error.code} message is ${error.message}`);
- }
getRemainingDelayTime(requestId: number, callback: AsyncCallback<number>): void
獲取應(yīng)用程序進(jìn)入掛起狀態(tài)前的剩余時間,使用callback形式返回。
系統(tǒng)能力: SystemCapability.ResourceSchedule.BackgroundTaskManager.TransientTask
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
requestId | number | 是 | 延遲掛起的請求ID。 |
callback | AsyncCallback<number> | 是 | 指定的callback回調(diào)方法。用于返回應(yīng)用程序進(jìn)入掛起狀態(tài)之前的剩余時間,以毫秒為單位。 |
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見@ohos.resourceschedule.backgroundTaskManager (后臺任務(wù)管理)錯誤碼。
錯誤碼ID | 錯誤信息 |
---|---|
9800001 | Memory operation failed. |
9800002 | Parcel operation failed. |
9800003 | Inner transact failed. |
9800004 | System service operation failed. |
9900001 | Caller information verification failed. |
9900002 | Background task verification failed. |
示例:
- import backgroundTaskManager from '@ohos.resourceschedule.backgroundTaskManager';
- let id = 1;
- try {
- backgroundTaskManager.getRemainingDelayTime(id, (error, res) => {
- if(error) {
- 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}`);
- }
getRemainingDelayTime(requestId: number): Promise<number>
獲取應(yīng)用程序進(jìn)入掛起狀態(tài)前的剩余時間,使用Promise形式返回。
系統(tǒng)能力: SystemCapability.ResourceSchedule.BackgroundTaskManager.TransientTask
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
requestId | number | 是 | 延遲掛起的請求ID。 |
返回值:
類型 | 說明 |
---|---|
Promise<number> | 指定的Promise回調(diào)方法。返回應(yīng)用程序進(jìn)入掛起狀態(tài)之前的剩余時間,以毫秒為單位。 |
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見@ohos.resourceschedule.backgroundTaskManager (后臺任務(wù)管理)錯誤碼。
錯誤碼ID | 錯誤信息 |
---|---|
9800001 | Memory operation failed. |
9800002 | Parcel operation failed. |
9800003 | Inner transact failed. |
9800004 | System service operation failed. |
9900001 | Caller information verification failed. |
9900002 | Background task verification failed. |
示例:
- import backgroundTaskManager from '@ohos.resourceschedule.backgroundTaskManager';
- let id = 1;
- try {
- backgroundTaskManager.getRemainingDelayTime(id).then( res => {
- console.log('promise => Operation getRemainingDelayTime succeeded. Data: ' + JSON.stringify(res));
- }).catch( error => {
- console.error(`promise => Operation getRemainingDelayTime failed. code is ${error.code} message is ${error.message}`);
- })
- } catch (error) {
- console.error(`promise => Operation getRemainingDelayTime failed. code is ${error.code} message is ${error.message}`);
- }
cancelSuspendDelay(requestId: number): void
取消延遲掛起。
系統(tǒng)能力: SystemCapability.ResourceSchedule.BackgroundTaskManager.TransientTask
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
requestId | number | 是 | 延遲掛起的請求ID。 |
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見@ohos.resourceschedule.backgroundTaskManager (后臺任務(wù)管理)錯誤碼。
錯誤碼ID | 錯誤信息 |
---|---|
9800001 | Memory operation failed. |
9800002 | Parcel operation failed. |
9800003 | Inner transact failed. |
9800004 | System service operation failed. |
9900001 | Caller information verification failed. |
9900002 | Background task verification failed. |
示例:
- import backgroundTaskManager from '@ohos.resourceschedule.backgroundTaskManager';
- let id = 1;
- try {
- backgroundTaskManager.cancelSuspendDelay(id);
- } catch (error) {
- console.error(`cancelSuspendDelay failed. code is ${error.code} message is ${error.message}`);
- }
startBackgroundRunning(context: Context, bgMode: BackgroundMode, wantAgent: WantAgent, callback: AsyncCallback<void>): void
向系統(tǒng)申請長時任務(wù),使用callback形式返回結(jié)果。
需要權(quán)限: ohos.permission.KEEP_BACKGROUND_RUNNING
系統(tǒng)能力: SystemCapability.ResourceSchedule.BackgroundTaskManager.ContinuousTask
參數(shù):
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見@ohos.resourceschedule.backgroundTaskManager (后臺任務(wù)管理)錯誤碼。
錯誤碼ID | 錯誤信息 |
---|---|
9800001 | Memory operation failed. |
9800002 | Parcel operation failed. |
9800003 | Inner transact failed. |
9800004 | System service operation failed. |
9800005 | Background task verification failed. |
9800006 | Notification verification failed. |
9800007 | Task storage failed. |
示例:
- import UIAbility from '@ohos.app.ability.UIAbility';
- import backgroundTaskManager from '@ohos.resourceschedule.backgroundTaskManager';
- import wantAgent from '@ohos.app.ability.wantAgent';
- function callback(error, data) {
- if (error) {
- console.error(`Operation startBackgroundRunning failed. code is ${error.code} message is ${error.message}`);
- } else {
- console.info("Operation startBackgroundRunning succeeded");
- }
- }
- export default class EntryAbility extends UIAbility {
- onCreate(want, launchParam) {
- let wantAgentInfo = {
- wants: [
- {
- bundleName: "com.example.myapplication",
- abilityName: "EntryAbility"
- }
- ],
- operationType: wantAgent.OperationType.START_ABILITY,
- requestCode: 0,
- wantAgentFlags: [wantAgent.WantAgentFlags.UPDATE_PRESENT_FLAG]
- };
- try {
- wantAgent.getWantAgent(wantAgentInfo).then((wantAgentObj) => {
- try {
- backgroundTaskManager.startBackgroundRunning(this.context,
- backgroundTaskManager.BackgroundMode.LOCATION, wantAgentObj, callback)
- } catch (error) {
- console.error(`Operation startBackgroundRunning failed. code is ${error.code} message is ${error.message}`);
- }
- });
- } catch (error) {
- console.error(`Operation getWantAgent failed. code is ${error.code} message is ${error.message}`);
- }
- }
- };
startBackgroundRunning(context: Context, bgMode: BackgroundMode, wantAgent: WantAgent): Promise<void>
向系統(tǒng)申請長時任務(wù),使用promise形式返回結(jié)果。
需要權(quán)限: ohos.permission.KEEP_BACKGROUND_RUNNING
系統(tǒng)能力: SystemCapability.ResourceSchedule.BackgroundTaskManager.ContinuousTask
參數(shù):
返回值:
類型 | 說明 |
---|---|
Promise<void> | 使用Promise形式返回結(jié)果。 |
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見@ohos.resourceschedule.backgroundTaskManager (后臺任務(wù)管理)錯誤碼。
錯誤碼ID | 錯誤信息 |
---|---|
9800001 | Memory operation failed. |
9800002 | Parcel operation failed. |
9800003 | Inner transact failed. |
9800004 | System service operation failed. |
9800005 | Background task verification failed. |
9800006 | Notification verification failed. |
9800007 | Task storage failed. |
示例:
- import UIAbility from '@ohos.app.ability.UIAbility';
- import backgroundTaskManager from '@ohos.resourceschedule.backgroundTaskManager';
- import wantAgent from '@ohos.app.ability.wantAgent';
- export default class EntryAbility extends UIAbility {
- onCreate(want, launchParam) {
- let wantAgentInfo = {
- wants: [
- {
- bundleName: "com.example.myapplication",
- abilityName: "EntryAbility"
- }
- ],
- operationType: wantAgent.OperationType.START_ABILITY,
- requestCode: 0,
- wantAgentFlags: [wantAgent.WantAgentFlags.UPDATE_PRESENT_FLAG]
- };
- try {
- wantAgent.getWantAgent(wantAgentInfo).then((wantAgentObj) => {
- try {
- backgroundTaskManager.startBackgroundRunning(this.context,
- backgroundTaskManager.BackgroundMode.LOCATION, wantAgentObj).then(() => {
- console.info("Operation startBackgroundRunning succeeded");
- }).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}`);
- }
- });
- } catch (error) {
- console.error(`Operation getWantAgent failed. code is ${error.code} message is ${error.message}`);
- }
- }
- };
stopBackgroundRunning(context: Context, callback: AsyncCallback<void>): void
向系統(tǒng)申請取消長時任務(wù),使用callback形式返回結(jié)果。
系統(tǒng)能力: SystemCapability.ResourceSchedule.BackgroundTaskManager.ContinuousTask
參數(shù):
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見@ohos.resourceschedule.backgroundTaskManager (后臺任務(wù)管理)錯誤碼。
錯誤碼ID | 錯誤信息 |
---|---|
9800001 | Memory operation failed. |
9800002 | Parcel operation failed. |
9800003 | Inner transact failed. |
9800004 | System service operation failed. |
9800005 | Background task verification failed. |
9800006 | Notification verification failed. |
9800007 | Task storage failed. |
示例:
- import UIAbility from '@ohos.app.ability.UIAbility';
- import backgroundTaskManager from '@ohos.resourceschedule.backgroundTaskManager';
- function callback(error, data) {
- if (error) {
- console.error(`Operation stopBackgroundRunning failed. code is ${error.code} message is ${error.message}`);
- } else {
- console.info("Operation stopBackgroundRunning succeeded");
- }
- }
- export default class EntryAbility extends UIAbility {
- onCreate(want, launchParam) {
- try {
- backgroundTaskManager.stopBackgroundRunning(this.context, callback);
- } catch (error) {
- console.error(`Operation stopBackgroundRunning failed. code is ${error.code} message is ${error.message}`);
- }
- }
- };
stopBackgroundRunning(context: Context): Promise<void>
向系統(tǒng)申請取消長時任務(wù),使用promise形式返回結(jié)果。
系統(tǒng)能力: SystemCapability.ResourceSchedule.BackgroundTaskManager.ContinuousTask
參數(shù):
返回值:
類型 | 說明 |
---|---|
Promise<void> | 使用Promise形式返回結(jié)果。 |
錯誤碼:
以下錯誤碼的詳細(xì)介紹請參見@ohos.resourceschedule.backgroundTaskManager (后臺任務(wù)管理)錯誤碼。
錯誤碼ID | 錯誤信息 |
---|---|
9800001 | Memory operation failed. |
9800002 | Parcel operation failed. |
9800003 | Inner transact failed. |
9800004 | System service operation failed. |
9800005 | Background task verification failed. |
9800006 | Notification verification failed. |
9800007 | Task storage failed. |
示例:
- import UIAbility from '@ohos.app.ability.UIAbility';
- import backgroundTaskManager from '@ohos.resourceschedule.backgroundTaskManager';
- export default class EntryAbility extends UIAbility {
- onCreate(want, launchParam) {
- try {
- backgroundTaskManager.stopBackgroundRunning(this.context).then(() => {
- console.info("Operation stopBackgroundRunning succeeded");
- }).catch((error) => {
- 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}`);
- }
- }
- };
延遲掛起信息。
系統(tǒng)能力: SystemCapability.ResourceSchedule.BackgroundTaskManager.TransientTask
名稱 | 類型 | 必填 | 說明 |
---|---|---|---|
requestId | number | 是 | 延遲掛起的請求ID。 |
actualDelayTime | number | 是 | 應(yīng)用的實際掛起延遲時間,以毫秒為單位。 一般情況下默認(rèn)值為180000,低電量(依據(jù)系統(tǒng)低電量廣播)時默認(rèn)值為60000。 |
系統(tǒng)能力: SystemCapability.ResourceSchedule.BackgroundTaskManager.ContinuousTask
名稱 | 值 | 說明 |
---|---|---|
DATA_TRANSFER | 1 | 數(shù)據(jù)傳輸。 |
AUDIO_PLAYBACK | 2 | 音頻播放。 |
AUDIO_RECORDING | 3 | 錄音。 |
LOCATION | 4 | 定位導(dǎo)航。 |
BLUETOOTH_INTERACTION | 5 | 藍(lán)牙相關(guān)。 |
MULTI_DEVICE_CONNECTION | 6 | 多設(shè)備互聯(lián)。 |
TASK_KEEPING | 9 | 計算任務(wù)(僅對特定設(shè)備生效)。 |
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: