天天看點

OpenHarmony背景任務

背景任務

背景應用頻繁活動,會造成使用者裝置耗電快、卡頓等現象。是以,為了支撐性能、功耗訴求,系統僅允許應用在背景執行規範内的活動,規範外的活動預設會被挂起,當資源不足時會被回收。同時,應用可以申請能效資源,保證自己在一段時間内不會被挂起,或者在挂起狀态能夠正常使用一些資源,例如公共事件、計時器等。

背景任務類型

本文描述的背景任務特指應用或業務子產品處于背景(無可見界面)時,有需要繼續執行或者後續執行的業務。OpenHarmony将背景任務分為三種類型,并執行不同的處理:

1. 無背景業務 :應用或業務子產品退到背景後,無任務需要處理。

2. 短時任務 :應用或業務子產品退到背景後,如果有緊急不可推遲且短時間能完成的任務,如應用退背景要進行資料壓縮,不可中斷,則使用短時任務申請延遲進入挂起(Suspend)狀态。

3. 長時任務 :如果是使用者發起的可感覺業務需要長時間背景運作,如背景播放音樂、導航、裝置連接配接、VoIP等,則使用長時任務避免進入挂起(Suspend)狀态。

4. 能效資源 :能效資源包括CPU資源、WORK_SCHEDULER資源、軟體資源(COMMON_EVENT, TIMER)、硬體資源(GPS, BLUETOOTH)。如果應用或者程序申請了能效資源,那麼根據能效資源的類型會擁有相應的特權,例如申請了CPU資源的可以不被挂起,申請了WORK_SCHEDULER後延時任務可以擁有更長的執行時間。

短時任務

退到背景的應用有不可中斷且短時間能完成的任務時,可以使用短時任務機制。該機制允許應用在背景短時間内完成任務,保障應用業務運作不受背景生命周期管理的影響。

短時任務使用限制

  • 申請時機:允許應用在前台時,或退背景在被挂起之前(應用退到背景預設有6~12秒的運作時長,具體時長由系統根據具體場景決定)申請延遲挂起,否則可能被挂起(Suspend),導緻申請失敗。
  • 逾時:延遲挂起即将逾時(Timeout),系統通過回調知會應用,應用需要取消對應的延遲挂起。如果逾時不取消,該應用會被強制終止。
  • 取消時機:任務完成後,應用應主動取消延遲挂起,不要等到系統回調後再取消,否則會影響該應用的背景允許運作時長配額。
  • 配額機制:為了防止應用濫用保活,或者申請後不取消,每個應用每天都會有一定配額(會根據使用者的使用習慣動态調整),配額消耗完就不再允許申請短時任務,是以應用完成短時任務後應立刻取消延遲挂起,避免消耗配額。(注:該配額指的是申請的時長,系統預設應用在背景運作的時間不計算在内)。

長時任務