自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

在多進(jìn)程應(yīng)用中使用 WorkManager

移動(dòng)開發(fā) Android
最近發(fā)布的 WorkManager 2.5.0 更適用于在多進(jìn)程環(huán)境中使用,并提供了多項(xiàng)穩(wěn)定性改進(jìn)。

 :memo: 最近發(fā)布的 WorkManager 2.5.0 更適用于在多進(jìn)程環(huán)境中使用,并提供了多項(xiàng)穩(wěn)定性改進(jìn)。

因此,如果您的某款應(yīng)用管理著多個(gè)進(jìn)程,并需要一種穩(wěn)健的方式來管理后臺(tái)工作 (不再出現(xiàn)初始化錯(cuò)誤 ⚠),那么此版本便是您的首選。

您需要對(duì)代碼進(jìn)行幾處更改,請(qǐng)繼續(xù)閱讀以了解更多內(nèi)容。

在本文末尾,我還將列出此版本 WorkManager 庫中的一些其他行為變更和新增內(nèi)容。

隆重推出: work-multiprocess

這一全新的多進(jìn)程工件通過將作業(yè)調(diào)度統(tǒng)一為單個(gè)進(jìn)程,從而帶來性能的提升。要開始使用此工件,請(qǐng)將其添加到您的應(yīng)用。

  1. Implementation "androidx.work:work-multiprocess:2.5.0" 

您現(xiàn)在可以 選擇 WorkManager 用于將 WorkRequest 加入隊(duì)列的指定進(jìn)程,并運(yùn)行其進(jìn)程中調(diào)度程序。

  • 選擇

    hhttps://developer.android.google.cn/topic/libraries/architecture/workmanager/advanced/custom-configuration

使用 Configuration.Provider 的配置如下所示。

  1. class MyApplication() : Application(), Configuration.Provider {  override fun getWorkManagerConfiguration() = 
  2.     Configuration.Builder() 
  3.       .setProcessName("com.example:remote"
  4.       .build() 

注意: 您需要傳遞完全限定的進(jìn)程名稱作為  setProcessName 的參數(shù),該名稱由您的應(yīng)用包名稱,后跟英文冒號(hào)和主機(jī)的進(jìn)程名稱組成,例如  com.example:remote 。

使用 work-multiprocess 時(shí),您需要使用 RemoteWorkManager (而非 WorkManager ) 來管理您的工作請(qǐng)求。 RemoteWorkManager 將始終使用指定的進(jìn)程將您的工作加入隊(duì)列。這可確保您不會(huì)在調(diào)用進(jìn)程中意外初始化新的 WorkManager。進(jìn)程中調(diào)度程序也會(huì)在指定的同一進(jìn)程中運(yùn)行。

  • RemoteWorkManager

    https://developer.android.google.cn/reference/androidx/work/multiprocess/RemoteWorkManager

優(yōu)勢(shì)

按照上述方法配置 WorkManager 并使用 RemoteWorkManager 調(diào)度作業(yè)時(shí),您的工作會(huì)在多進(jìn)程應(yīng)用中得到更快速、更可靠的管理。這是因?yàn)?SQLite 爭用 情況會(huì)大大減少 (因?yàn)槲覀儾辉僖蕾囉谝晕募榛A(chǔ)的鎖定),且不再需要跨進(jìn)程的作業(yè)協(xié)調(diào),因?yàn)槟膽?yīng)用僅會(huì)在您指定的進(jìn)程中運(yùn)行單個(gè) WorkManager 實(shí)例。

  • 爭用

    https://en.wikipedia.org/wiki/Resource_contention

行為變更 :twisted_rightwards_arrows:

作業(yè)協(xié)調(diào)

之前,當(dāng) ActivityManager 無法實(shí)例化 JobService 以啟動(dòng)作業(yè)時(shí),該作業(yè)將因?yàn)槠脚_(tái)中的底層問題而被靜默刪除。WorkManager 現(xiàn)在可確保通過協(xié)調(diào) WorkRequest 對(duì)象與作業(yè)創(chuàng)建 "應(yīng)用" 實(shí)例時(shí),每個(gè) WorkRequest 都會(huì)有一個(gè)后備調(diào)度程序作業(yè)。

限制內(nèi)部數(shù)據(jù)庫增長

我們發(fā)現(xiàn)應(yīng)用崩潰的原因之一是設(shè)備存儲(chǔ)空間不足。這種情況主要發(fā)生在存儲(chǔ)空間本來就很少的設(shè)備上。但是,當(dāng)應(yīng)用調(diào)度 大量 工作時(shí),導(dǎo)致設(shè)備存儲(chǔ)空間不足的部分原因在于 WorkManager。

默認(rèn)情況下,內(nèi)部的 WorkManager 數(shù)據(jù)庫會(huì)將已完成作業(yè)的記錄保留 7 天。而現(xiàn)在,這個(gè)期限已減少至 1 天,大大降低了數(shù)據(jù)庫的大小。

我們縮短了緩沖區(qū)持續(xù)時(shí)間,這樣您就能借助 keepResultsForAtLeast() API 控制作業(yè)應(yīng)被保留的時(shí)長。

全新測(cè)試 API :sparkles:

如果您將 ListenableFuture 和 WorkManager 配合使用,測(cè)試工作會(huì)變得更輕松 — TestListenableWorkerBuilder Kotlin 擴(kuò)展程序現(xiàn)在可以接收任何類擴(kuò)展 ListenableWorker ,從而在測(cè)試過程中為您提供更高的靈活性。

問題修復(fù) :bug:

除了新增的功能,此版本還包含多個(gè)錯(cuò)誤修復(fù),以提高 WorkManager 的穩(wěn)定性、可靠性和性能。您可以在 版本說明 中查看所有更改以及修復(fù)的錯(cuò)誤。

  • 版本說明

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

如何改進(jìn) WorkManager

通過 GitHub 向 WorkManager 貢獻(xiàn)內(nèi)容 :woman:‍:computer:

WorkManager 以及其他幾個(gè) Jetpack 庫都接受通過 GitHub 貢獻(xiàn)的內(nèi)容。

Alan Viverette 撰寫了 一篇關(guān)于整個(gè)流程的 詳盡博文 。

  • Alan Viverette

    https://medium.com/@alan.viverette

  • 詳盡博文

    https://medium.com/androiddevelopers/introducing-jetpack-on-github-c2c9f12e62a9

遇到問題時(shí)請(qǐng)告訴我們 :memo:

2.5.0 版本中修復(fù)的大部分錯(cuò)誤都是通過 公開問題跟蹤器 報(bào)告的。

  • 公開問題跟蹤器

    https://issuetracker.google.com/issues?q=componentid:409906

創(chuàng)建可修復(fù)問題的最佳方式就是 創(chuàng)建一個(gè)我們可復(fù)現(xiàn)的問題 。為幫助我們?cè)佻F(xiàn)問題,建議您使用該 WorkManager 示例 ,或通過問題描述提供您的示例代碼。

  • 創(chuàng)建可復(fù)現(xiàn)的問題

    https://issuetracker.google.com/issues/new?component=409906

  • WorkManager 示例

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

是時(shí)候行動(dòng)起來,并更新您應(yīng)用中使用的 WorkManager 庫了。

責(zé)任編輯:張燕妮 來源: 谷歌開發(fā)者
相關(guān)推薦

2022-07-11 10:23:42

云原生Python多核CPU

2010-07-26 09:53:08

Perl多進(jìn)程

2009-09-22 12:17:59

ibmdwLotus

2023-12-22 09:11:45

AndroidNFC移動(dòng)開發(fā)

2010-07-15 13:13:21

Perl多進(jìn)程

2023-11-28 13:52:00

Python多進(jìn)程多線程

2009-06-19 13:45:53

Java應(yīng)用程序Jfreechart

2013-10-09 11:15:49

Ubuntu應(yīng)用程序

2011-07-21 14:50:06

Core Data SQL

2011-05-27 08:48:13

Android HTML

2021-09-07 10:24:36

Vue應(yīng)用程序Web Workers

2010-07-14 11:14:48

Perl多進(jìn)程

2019-03-12 09:20:09

shell爬蟲命名

2020-11-18 09:06:04

Python

2017-06-30 10:12:46

Python多進(jìn)程

2009-04-12 08:46:43

Symbian諾基亞移動(dòng)OS

2009-11-23 19:52:55

ibmdwFlex

2012-06-05 09:54:50

Windows Pho

2022-08-30 20:00:37

零信任Linkerd

2009-06-25 16:49:24

Hibernate
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)