91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

如何在Android 12中運(yùn)行WorkManager

谷歌開(kāi)發(fā)者 ? 來(lái)源:Android開(kāi)發(fā)者 ? 作者:Android ? 2021-10-28 11:18 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Android 12 (API 級(jí)別為 31) 引入了前臺(tái)服務(wù)啟動(dòng)限制。除少部分特殊場(chǎng)景外,如果您的應(yīng)用的 targetSdkVersion 是 Android 12 或者更高 API 級(jí)別的話,應(yīng)用在后臺(tái)運(yùn)行時(shí)將不能再啟動(dòng)前臺(tái)服務(wù)。這意味著,如果應(yīng)用當(dāng)前狀態(tài)不符合后臺(tái)啟動(dòng)服務(wù)的條件,調(diào)用 setForeground 時(shí)可能會(huì)拋出異常。

前臺(tái)服務(wù)啟動(dòng)限制

https://developer.android.google.cn/about/versions/12/foreground-services

特殊場(chǎng)景

https://developer.android.google.cn/guide/components/foreground-services#background-start-restriction-exemptions

setForeground

https://developer.android.google.cn/reference/androidx/work/ListenableWorker#setForegroundAsync(androidx.work.ForegroundInfo)

異常

https://developer.android.google.cn/reference/android/app/ForegroundServiceStartNotAllowedException

因此,我們?cè)?WorkManager 2.7 中做出了部分改進(jìn),使得應(yīng)用在遵守后臺(tái)限制的同時(shí)可以輕松地安排重要任務(wù)。通過(guò)加急任務(wù),應(yīng)用可以輕松地運(yùn)行耗時(shí)短且高優(yōu)先級(jí)的任務(wù),例如發(fā)送一條聊天信息或者往社交網(wǎng)絡(luò)上傳一張圖片。推薦使用加急任務(wù)來(lái)啟動(dòng)需要立即執(zhí)行且即使用戶將應(yīng)用放至后臺(tái)也能繼續(xù)執(zhí)行的任務(wù)。

加急任務(wù)

https://developer.android.google.cn/about/versions/12/foreground-services#expedited-jobs

如需設(shè)置加急任務(wù),可通過(guò) WorkRequest 的 Builder 對(duì)象調(diào)用 setExpedited() 方法:

val request = OneTimeWorkRequestBuilder《HighPriorityWorker》() .setExpedited(OutOfQuotaPolicy.RUN_AS_NON_EXPEDITED_WORK_REQUEST) .build()WorkManager.getInstance(context).enqueue(request)

通過(guò)調(diào)用 setExpedited() 告訴框架該任務(wù)是重要的并且比其他任務(wù)具有更高的優(yōu)先級(jí)。請(qǐng)注意,我們?cè)谡{(diào)用 setExpedited() 方法時(shí)傳入了 OutOfQuotaPolicy 參數(shù)。加急任務(wù)受基于應(yīng)用待機(jī)群組 (App Standby Buckets) 的配額限制,當(dāng)您的應(yīng)用嘗試在超出配額的情況下執(zhí)行加急任務(wù)時(shí),WorkManager 會(huì)根據(jù) OutOfQuotaPolicy 參數(shù)做出相應(yīng)的行為: 完全放棄加急任務(wù)請(qǐng)求 (DROP_WORK_REQUEST),或者將該加急任務(wù)降級(jí)至普通任務(wù) (RUN_AS_NON_EXPEDITED_WORK_REQUEST)。加急任務(wù)很重要,但并不意味著它可以一直執(zhí)行,您需要將配額視為執(zhí)行加急任務(wù)的時(shí)間限制。

OutOfQuotaPolicy

https://developer.android.google.cn/reference/androidx/work/OutOfQuotaPolicy

應(yīng)用待機(jī)群組 (App Standby Buckets)

https://developer.android.google.cn/topic/performance/appstandby

WorkManager 2.7 是向后兼容的,可以在 Android 12 之前的系統(tǒng)上運(yùn)行。當(dāng)在 Android 11 或之前版本的系統(tǒng)上調(diào)用 setExpedited() 時(shí),WorkManager 將默認(rèn)使用前臺(tái)服務(wù)代替加急任務(wù)。

想了解 WorkManager 中 setExpedited() API 的實(shí)戰(zhàn),請(qǐng)參閱官方文檔:

WorkManager 示例

https://github.com/android/architecture-components-samples/tree/android-s/WorkManagerSample

加急任務(wù)

https://developer.android.google.cn/topic/libraries/architecture/workmanager/how-to/define-work#expedited-jobs

您可以在官方發(fā)布說(shuō)明中查看 WorkManager 每個(gè)版本中變更及優(yōu)化的詳細(xì)列表,以及 WorkManager 2.6 和 WorkManager 2.7 的發(fā)布說(shuō)明。

WorkManager 2.6

https://developer.android.google.cn/jetpack/androidx/releases/work#2.6.0

WorkManager 2.7

https://developer.android.google.cn/jetpack/androidx/releases/work#2.7.0

責(zé)任編輯:haq

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

    關(guān)注

    12

    文章

    4028

    瀏覽量

    134075
  • 服務(wù)器
    +關(guān)注

    關(guān)注

    14

    文章

    10270

    瀏覽量

    91546

原文標(biāo)題:在 Android 12 中使用 WorkManager

文章出處:【微信號(hào):Google_Developers,微信公眾號(hào):谷歌開(kāi)發(fā)者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    何在DGX Spark上運(yùn)行NVIDIA Omniverse

    首先感謝 Vigor 同學(xué)第一時(shí)間的分享,以下是具體如何在 DGX Spark 上運(yùn)行 Omniverse 的方法。
    的頭像 發(fā)表于 12-17 10:13 ?663次閱讀
    如<b class='flag-5'>何在</b>DGX Spark上<b class='flag-5'>運(yùn)行</b>NVIDIA Omniverse

    何在 buildroot 的 rootfs 顯示當(dāng)前目錄?

    何在 buildroot 的 rootfs 顯示當(dāng)前目錄?
    發(fā)表于 09-03 07:02

    何在裸機(jī)環(huán)境運(yùn)行KleidiAI微內(nèi)核

    探索如何在裸機(jī)環(huán)境運(yùn)行 KleidiAI 內(nèi)核,并通過(guò)測(cè)試多款 C/C++ 編譯器,以確定如何能更高效地生成代碼。
    的頭像 發(fā)表于 08-08 15:16 ?3857次閱讀
    如<b class='flag-5'>何在</b>裸機(jī)環(huán)境<b class='flag-5'>中</b><b class='flag-5'>運(yùn)行</b>KleidiAI微內(nèi)核

    Android Studio的Gemini全面支持Dart和Flutter開(kāi)發(fā)

    Android Studio 創(chuàng)建 Android 應(yīng)用的 Flutter 開(kāi)發(fā)者將迎來(lái)一次重大的飛躍: Android Studio
    的頭像 發(fā)表于 08-06 13:52 ?1369次閱讀
    <b class='flag-5'>Android</b> Studio<b class='flag-5'>中</b>的Gemini全面支持Dart和Flutter開(kāi)發(fā)

    何在樹(shù)莓派上安裝并運(yùn)行 Arduino 集成開(kāi)發(fā)環(huán)境!

    ,我們將介紹如何在樹(shù)莓派上安裝并運(yùn)行ArduinoIDE。所需物品要在樹(shù)莓派上運(yùn)行ArduinoIDE,你需要以下組件:配備適當(dāng)電源的樹(shù)莓派4開(kāi)發(fā)板HDMI顯示器或電
    的頭像 發(fā)表于 07-01 17:41 ?4377次閱讀
    如<b class='flag-5'>何在</b>樹(shù)莓派上安裝并<b class='flag-5'>運(yùn)行</b> Arduino 集成開(kāi)發(fā)環(huán)境!

    何在k230上運(yùn)行OpenCV的代碼?

    何在k230上運(yùn)行OpenCV的代碼
    發(fā)表于 06-17 06:06

    何在Android設(shè)備上安裝Cyusb3014芯片驅(qū)動(dòng)?

    1.如何在Android設(shè)備上安裝Cyusb3014芯片驅(qū)動(dòng)? 我們?cè)?Windows 上有 FX3 驅(qū)動(dòng)程序 SDK。 2.如何在Android系統(tǒng)上下載固件到芯片中?
    發(fā)表于 05-15 07:23

    何在i.mx8mq的android13上啟用Widevine DRM?

    /widevine 文件夾。 2. Android 13 顯示不支持。 Android 13 沒(méi)有 vendor/widevine 文件夾。 那么,如何在
    發(fā)表于 04-11 06:44

    多顯示器在運(yùn)行Android Automotive 8 i.MX Automotive 13.0.0 1.1.0系統(tǒng)的1.1.0 EVK無(wú)法正常工作怎么解決?

    我們?cè)?imx8 QuadXPlus EVK 運(yùn)行 Android Automotive 13.0.0 1.1.0 映像。我們閃現(xiàn)的圖像是Android 13 1.1.0 圖像(超鏈
    發(fā)表于 04-10 06:02

    如何基于Android 14在i.MX95 EVK上運(yùn)行Deepseek-R1-1.5B和性能

    本文檔總結(jié)了如何基于 Android 14 在 i.MX95 EVK 上運(yùn)行 Deepseek-R1-1.5B 和性能。 1. Install Android 14 on i.MX95 您可以按照
    發(fā)表于 04-04 06:59

    【技術(shù)案例】Android in Docker

    的資源利用,廣泛用于開(kāi)發(fā)、測(cè)試和生產(chǎn)環(huán)境。AndroidinDocker介紹宿主機(jī)系統(tǒng)通過(guò)docker運(yùn)行Android容器。利用doc
    的頭像 發(fā)表于 04-02 16:33 ?1792次閱讀
    【技術(shù)案例】<b class='flag-5'>Android</b> in Docker

    何在Simulink啟用ADC校準(zhǔn)?

    何在 Simulink 啟用 ADC 校準(zhǔn)? V4.2.0 產(chǎn)品發(fā)布報(bào)告指出,它在塊可用。但我在 ADC 配置塊找不到任何選項(xiàng)。
    發(fā)表于 03-31 07:50

    Android 16有哪些變更

    全球范圍內(nèi)有超過(guò) 30 億臺(tái) Android 設(shè)備正在使用,這使得 Android 生態(tài)系統(tǒng)比以往任何時(shí)候都更加活躍。Android 移動(dòng)應(yīng)用能夠在手機(jī)、可折疊設(shè)備、平板電腦、Chr
    的頭像 發(fā)表于 03-27 10:18 ?1896次閱讀

    何在 樹(shù)莓派 上編寫(xiě)和運(yùn)行 C 語(yǔ)言程序?

    在本教程,我將討論C編程語(yǔ)言是什么,C編程的用途,以及如何在RaspberryPi上編寫(xiě)和運(yùn)行C程序。本文的目的是為您介紹在RaspberryPi上進(jìn)行C編程的基礎(chǔ)知識(shí)。如果您想深入了解C編程
    的頭像 發(fā)表于 03-25 09:28 ?1179次閱讀
    如<b class='flag-5'>何在</b> 樹(shù)莓派 上編寫(xiě)和<b class='flag-5'>運(yùn)行</b> C 語(yǔ)言程序?

    零基礎(chǔ)入門:如何在樹(shù)莓派上編寫(xiě)和運(yùn)行Python程序?

    在這篇文章,我將為你簡(jiǎn)要介紹Python程序是什么、Python程序可以用來(lái)做什么,以及如何在RaspberryPi上編寫(xiě)和運(yùn)行一個(gè)簡(jiǎn)單的Python程序。什么是Python程序?Python
    的頭像 發(fā)表于 03-25 09:27 ?2070次閱讀
    零基礎(chǔ)入門:如<b class='flag-5'>何在</b>樹(shù)莓派上編寫(xiě)和<b class='flag-5'>運(yùn)行</b>Python程序?