延遲任務(wù)調(diào)度

2024-01-23 15:54 更新

本模塊提供延遲任務(wù)注冊、取消、查詢的能力。

開發(fā)者在開發(fā)應(yīng)用時,通過調(diào)用延遲任務(wù)注冊接口,注冊對實(shí)時性要求不高的延遲任務(wù),該任務(wù)默認(rèn)由系統(tǒng)安排,在系統(tǒng)空閑時根據(jù)性能、功耗、熱等情況進(jìn)行調(diào)度執(zhí)行。

說明
  • 本模塊首批接口從API version 9開始支持。后續(xù)版本的新增接口,采用上角標(biāo)單獨(dú)標(biāo)記接口的起始版本。
  • 本模塊接口僅可在Stage模型下使用。

導(dǎo)入模塊

  1. import workScheduler from '@ohos.resourceschedule.workScheduler';

workScheduler.startWork

startWork(work: WorkInfo): void

通知WorkSchedulerService將工作添加到執(zhí)行隊列。

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

參數(shù)

參數(shù)名

類型

必填

說明

work

WorkInfo

指示要添加到執(zhí)行隊列的工作。

錯誤碼

以下錯誤碼的詳細(xì)介紹請參見@ohos.resourceschedule.workScheduler (延遲任務(wù)調(diào)度)錯誤碼。

錯誤碼ID

錯誤信息

9700001

Memory operation failed.

9700002

Parcel operation failed.

9700003

System service operation failed.

9700004

Check workInfo failed.

9700005

StartWork failed.

示例

  1. let workInfo = {
  2. workId: 1,
  3. batteryStatus:workScheduler.BatteryStatus.BATTERY_STATUS_LOW,
  4. isRepeat: false,
  5. isPersisted: true,
  6. bundleName: "com.example.myapplication",
  7. abilityName: "MyExtension",
  8. parameters: {
  9. mykey0: 1,
  10. mykey1: "string value",
  11. mykey2: true,
  12. mykey3: 1.5
  13. }
  14. }
  15. try{
  16. workScheduler.startWork(workInfo);
  17. console.info('workschedulerLog startWork success');
  18. } catch (error) {
  19. console.error(`workschedulerLog startwork failed. code is ${error.code} message is ${error.message}`);
  20. }

workScheduler.stopWork

stopWork(work: WorkInfo, needCancel?: boolean): void

通知WorkSchedulerService停止指定工作。

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

參數(shù)

參數(shù)名

類型

必填

說明

work

WorkInfo

指示要停止的工作。

needCancel

boolean

是否需要取消的工作,默認(rèn)為不取消。

錯誤碼

以下錯誤碼的詳細(xì)介紹請參見@ohos.resourceschedule.workScheduler (延遲任務(wù)調(diào)度)錯誤碼。

錯誤碼ID

錯誤信息

9700001

Memory operation failed.

9700002

Parcel operation failed.

9700003

System service operation failed.

9700004

Check workInfo failed.

示例

  1. let workInfo = {
  2. workId: 1,
  3. batteryStatus:workScheduler.BatteryStatus.BATTERY_STATUS_LOW,
  4. isRepeat: false,
  5. isPersisted: true,
  6. bundleName: "com.example.myapplication",
  7. abilityName: "MyExtension",
  8. parameters: {
  9. mykey0: 1,
  10. mykey1: "string value",
  11. mykey2: true,
  12. mykey3: 1.5
  13. }
  14. }
  15. try{
  16. workScheduler.stopWork(workInfo, false);
  17. console.info('workschedulerLog stopWork success');
  18. } catch (error) {
  19. console.error(`workschedulerLog stopWork failed. code is ${error.code} message is ${error.message}`);
  20. }

workScheduler.getWorkStatus

getWorkStatus(workId: number, callback : AsyncCallback<WorkInfo>): void

獲取工作的最新狀態(tài),使用Callback形式返回。

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

參數(shù)

參數(shù)名

類型

必填

說明

workId

number

work的id。

callback

AsyncCallback<WorkInfo>

指定的callback回調(diào)方法。如果指定的工作Id有效,則返回從WorkSchedulerService獲取的有效工作狀態(tài);否則拋出異常。

錯誤碼

以下錯誤碼的詳細(xì)介紹請參見@ohos.resourceschedule.workScheduler (延遲任務(wù)調(diào)度)錯誤碼。

錯誤碼ID

錯誤信息

9700001

Memory operation failed.

9700002

Parcel operation failed.

9700003

System service operation failed.

9700004

Check workInfo failed.

示例

  1. try{
  2. workScheduler.getWorkStatus(50, (error, res) => {
  3. if (error) {
  4. console.error(`workschedulerLog getWorkStatus failed. code is ${error.code} message is ${error.message}`);
  5. } else {
  6. for (let item in res) {
  7. console.info(`workschedulerLog getWorkStatus success, ${item} is: ${res[item]}`);
  8. }
  9. }
  10. });
  11. } catch (error) {
  12. console.error(`workschedulerLog getWorkStatus failed. code is ${error.code} message is ${error.message}`);
  13. }

workScheduler.getWorkStatus

getWorkStatus(workId: number): Promise<WorkInfo>

獲取工作的最新狀態(tài),使用Promise形式返回。

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

參數(shù)

參數(shù)名

類型

必填

說明

workId

number

work的id。

返回值

類型

說明

Promise<WorkInfo>

指定的Promise回調(diào)方法。如果指定的工作ID有效,則返回從WorkSchedulerService獲取的有效工作狀態(tài);否則拋出異常。

錯誤碼

以下錯誤碼的詳細(xì)介紹請參見@ohos.resourceschedule.workScheduler (延遲任務(wù)調(diào)度)錯誤碼。

錯誤碼ID

錯誤信息

9700001

Memory operation failed.

9700002

Parcel operation failed.

9700003

System service operation failed.

9700004

Check workInfo failed.

示例

  1. try{
  2. workScheduler.getWorkStatus(50).then((res) => {
  3. for (let item in res) {
  4. console.info(`workschedulerLog getWorkStatus success, ${item} is: ${res[item]}`);
  5. }
  6. }).catch((error) => {
  7. console.error(`workschedulerLog getWorkStatus failed. code is ${error.code} message is ${error.message}`);
  8. })
  9. } catch (error) {
  10. console.error(`workschedulerLog getWorkStatus failed. code is ${error.code} message is ${error.message}`);
  11. }

workScheduler.obtainAllWorks

obtainAllWorks(callback : AsyncCallback<void>): Array<WorkInfo>

獲取與當(dāng)前應(yīng)用程序關(guān)聯(lián)的所有工作,使用Callback形式返回。

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

參數(shù)

參數(shù)名

類型

必填

說明

callback

AsyncCallback<void>

指定的callback回調(diào)方法。返回與應(yīng)用程序關(guān)聯(lián)的所有工作。

返回值

類型

說明

Array<WorkInfo>

返回與應(yīng)用程序關(guān)聯(lián)的所有工作。

錯誤碼

以下錯誤碼的詳細(xì)介紹請參見@ohos.resourceschedule.workScheduler (延遲任務(wù)調(diào)度)錯誤碼。

錯誤碼ID

錯誤信息

9700001

Memory operation failed.

9700002

Parcel operation failed.

9700003

System service operation failed.

示例

  1. try{
  2. workScheduler.obtainAllWorks((error, res) =>{
  3. if (error) {
  4. console.error(`workschedulerLog obtainAllWorks failed. code is ${error.code} message is ${error.message}`);
  5. } else {
  6. console.info(`workschedulerLog obtainAllWorks success, data is: ${JSON.stringify(res)}`);
  7. }
  8. });
  9. } catch (error) {
  10. console.error(`workschedulerLog obtainAllWorks failed. code is ${error.code} message is ${error.message}`);
  11. }

workScheduler.obtainAllWorks

obtainAllWorks(): Promise<Array<WorkInfo>>

獲取與當(dāng)前應(yīng)用程序關(guān)聯(lián)的所有工作,使用Promise形式返回。

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

返回值

類型

說明

Promise<Array<WorkInfo>>

指定的Promise回調(diào)方法。返回與應(yīng)用程序關(guān)聯(lián)的所有工作。

錯誤碼

以下錯誤碼的詳細(xì)介紹請參見@ohos.resourceschedule.workScheduler (延遲任務(wù)調(diào)度)錯誤碼。

錯誤碼ID

錯誤信息

9700001

Memory operation failed.

9700002

Parcel operation failed.

9700003

System service operation failed.

示例

  1. try{
  2. workScheduler.obtainAllWorks().then((res) => {
  3. console.info(`workschedulerLog obtainAllWorks success, data is: ${JSON.stringify(res)}`);
  4. }).catch((error) => {
  5. console.error(`workschedulerLog obtainAllWorks failed. code is ${error.code} message is ${error.message}`);
  6. })
  7. } catch (error) {
  8. console.error(`workschedulerLog obtainAllWorks failed. code is ${error.code} message is ${error.message}`);
  9. }

workScheduler.stopAndClearWorks

stopAndClearWorks(): void

停止和取消與當(dāng)前應(yīng)用程序關(guān)聯(lián)的所有工作。

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

錯誤碼

以下錯誤碼的詳細(xì)介紹請參見@ohos.resourceschedule.workScheduler (延遲任務(wù)調(diào)度)錯誤碼。

錯誤碼ID

錯誤信息

9700001

Memory operation failed.

9700002

Parcel operation failed.

9700003

System service operation failed.

示例

  1. try{
  2. workScheduler.stopAndClearWorks();
  3. console.info(`workschedulerLog stopAndClearWorks success`);
  4. } catch (error) {
  5. console.error(`workschedulerLog stopAndClearWorks failed. code is ${error.code} message is ${error.message}`);
  6. }

workScheduler.isLastWorkTimeOut

isLastWorkTimeOut(workId: number, callback : AsyncCallback<void>): boolean

檢查指定工作的最后一次執(zhí)行是否為超時操作,使用Callback形式返回。

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

參數(shù)

參數(shù)名

類型

必填

說明

workId

number

work的id。

callback

AsyncCallback<void>

指定的callback回調(diào)方法。如果指定工作的最后一次執(zhí)行是超時操作,則返回true;否則返回false。

返回值

類型

說明

boolean

指定的callback回調(diào)方法。如果指定工作的最后一次執(zhí)行是超時操作,則返回true;否則返回false。

錯誤碼

以下錯誤碼的詳細(xì)介紹請參見@ohos.resourceschedule.workScheduler (延遲任務(wù)調(diào)度)錯誤碼。

錯誤碼ID

錯誤信息

9700001

Memory operation failed.

9700002

Parcel operation failed.

9700003

System service operation failed.

9700004

Check workInfo failed.

示例

  1. try{
  2. workScheduler.isLastWorkTimeOut(500, (error, res) =>{
  3. if (error) {
  4. console.error(`workschedulerLog isLastWorkTimeOut failed. code is ${error.code} message is ${error.message}`);
  5. } else {
  6. console.info(`workschedulerLog isLastWorkTimeOut success, data is: ${res}`);
  7. }
  8. });
  9. } catch (error) {
  10. console.error(`workschedulerLog isLastWorkTimeOut failed. code is ${error.code} message is ${error.message}`);
  11. }

workScheduler.isLastWorkTimeOut

isLastWorkTimeOut(workId: number): Promise<boolean>

檢查指定工作的最后一次執(zhí)行是否為超時操作,使用Promise形式返回。

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

參數(shù)

參數(shù)名

類型

必填

說明

workId

number

work的id。

返回值

類型

說明

Promise<boolean>

指定的Promise回調(diào)方法。如果指定工作的最后一次執(zhí)行是超時操作,則返回true;否則返回false。

錯誤碼

以下錯誤碼的詳細(xì)介紹請參見@ohos.resourceschedule.workScheduler (延遲任務(wù)調(diào)度)錯誤碼。

錯誤碼ID

錯誤信息

9700001

Memory operation failed.

9700002

Parcel operation failed.

9700003

System service operation failed.

9700004

Check workInfo failed.

示例

  1. try{
  2. workScheduler.isLastWorkTimeOut(500)
  3. .then(res => {
  4. console.info(`workschedulerLog isLastWorkTimeOut success, data is: ${res}`);
  5. })
  6. .catch(error => {
  7. console.error(`workschedulerLog isLastWorkTimeOut failed. code is ${error.code} message is ${error.message}`);
  8. });
  9. } catch (error) {
  10. console.error(`workschedulerLog isLastWorkTimeOut failed. code is ${error.code} message is ${error.message}`);
  11. }

WorkInfo

提供工作的具體信息。

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

名稱

類型

必填

說明

workId

number

當(dāng)前工作的ID

bundleName

string

延遲任務(wù)包名

abilityName

string

延遲任務(wù)回調(diào)通知的組件名(必填)

networkType

NetworkType

網(wǎng)絡(luò)類型

isCharging

boolean

是否充電

chargerType

ChargingType

充電類型

batteryLevel

number

電量

batteryStatus

BatteryStatus

電池狀態(tài)

storageRequest

StorageRequest

存儲狀態(tài)

isRepeat

boolean

是否循環(huán)任務(wù)

repeatCycleTime

number

循環(huán)間隔,單位為毫秒

repeatCount

number

循環(huán)次數(shù)

isPersisted

boolean

是否持久化保存工作

isDeepIdle

boolean

是否要求設(shè)備進(jìn)入空閑狀態(tài)

idleWaitTime

number

空閑等待時間,單位為毫秒

parameters

[key: string]: number|

string|boolean

攜帶參數(shù)信息

NetworkType

觸發(fā)工作的網(wǎng)絡(luò)類型。

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

名稱

說明

NETWORK_TYPE_ANY

0

表示這個觸發(fā)條件是任何類型的網(wǎng)絡(luò)連接。

NETWORK_TYPE_MOBILE

1

表示這個觸發(fā)條件是Mobile網(wǎng)絡(luò)連接。

NETWORK_TYPE_WIFI

2

表示這個觸發(fā)條件是Wifi類型的網(wǎng)絡(luò)連接。

ChargingType

觸發(fā)工作的充電類型。

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

名稱

說明

CHARGING_PLUGGED_ANY

0

表示這個觸發(fā)條件是任何類型的充電器連接。

CHARGING_PLUGGED_AC

1

表示這個觸發(fā)條件是直流充電器連接。

CHARGING_PLUGGED_USB

2

表示這個觸發(fā)條件是USB充連接。

CHARGING_PLUGGED_WIRELESS

3

表示這個觸發(fā)條件是無線充電器連接。

BatteryStatus

觸發(fā)工作的電池狀態(tài)。

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

名稱

說明

BATTERY_STATUS_LOW

0

表示這個觸發(fā)條件是低電量。

BATTERY_STATUS_OKAY

1

表示這個觸發(fā)條件是正常電量。

BATTERY_STATUS_LOW_OR_OKAY

2

表示這個觸發(fā)條件是低電量或正常電量。

StorageRequest

觸發(fā)工作的存儲狀態(tài)。

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

名稱

說明

STORAGE_LEVEL_LOW

0

表示這個觸發(fā)條件是存儲空間不足。

STORAGE_LEVEL_OKAY

1

表示這個觸發(fā)條件是存儲空間正常。

STORAGE_LEVEL_LOW_OR_OKAY

2

表示這個觸發(fā)條件是存儲空間不足或正常。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號