Blog oficial para desenvolvedores que falam português

Uso do WorkManager em apps multiprocesso

24/02/2021

📝 O recente lançamento do WorkManager 2.5.0 facilita a utilização em ambientes multiprocesso e oferece várias melhorias de estabilidade.

Portanto, se você tem um app que gerencia vários processos e precisa de uma forma robusta para gerenciar o trabalho em segundo plano (sem mais erros de inicialização ️️⚠), essa é a versão para você.

Você terá que fazer algumas alterações no código, por isso, continue lendo para saber mais.

Ao final deste artigo, também listarei algumas outras alterações de comportamento e as mais recentes adições desta versão da biblioteca WorkManager.

Apresentamos o work-multiprocess

O novo artefato multiprocess introduz ganhos de desempenho com a unificação da programação de jobs em um único processo. Para começar, adicione-o ao app.

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

Agora, você pode escolher o processo designado que o WorkManager usa para enfileirar WorkRequests e executar seu programador em processo.

Uma configuração que use Configuration.Provider pode ser semelhante a esta.

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

Observação: o parâmetro em setProcessName exige a transmissão do nome totalmente qualificado do processo, que consiste no nome do pacote do app, seguido por dois-pontos e pelo nome do processo do host, por exemplo, com.example:remote.

Ao usar work-multiprocess, também convém usar RemoteWorkManager em vez de WorkManager para gerenciar suas solicitações de trabalho. RemoteWorkManager sempre contatará o processo designado para enfileirar o trabalho para você. Isso garante que você não inicialize acidentalmente um novo WorkManager no processo de chamada. O programador em processo também é executado no mesmo processo designado.

Benefícios

Com o WorkManager configurado dessa forma e o uso do RemoteWorkManager para programar seus jobs, agora você pode apreciar seu trabalho sendo gerenciado com mais rapidez e confiabilidade no app multiprocesso. Isso porque a contenção do SQLite pode ser amplamente reduzida (uma vez que não dependemos mais dos bloqueios baseados em arquivo) e a reconciliação de jobs entre processos não será mais necessária porque o app terá uma única instância do WorkManager em execução em um processo que você pode designar.

Alterações de comportamento 🔀

Reconciliação de jobs

Antes, quando o ActivityManager não conseguia instanciar o JobService para iniciar um job, esse job era descartado silenciosamente devido a um bug subjacente da plataforma. Agora, o WorkManager garante que haja um job programador de apoio para cada WorkRequest quando uma instância de Aplicativo é criada com a reconciliação de objetos WorkRequest com os jobs.

Limite o crescimento do banco de dados interno

Vimos que uma das causas de falhas de apps era o esgotamento do armazenamento no dispositivo. Isso acontecia principalmente nos dispositivos que tinham baixa capacidade de armazenamento. No entanto, quando os apps programavam muito trabalho, o WorkManager era parcialmente responsável por esse esgotamento de capacidade.

Por padrão, os jobs ficavam registrados em um banco de dados interno do WorkManager por sete dias. Isso foi reduzido para um dia, o que diminui drasticamente o tamanho do banco de dados.

Embora tenhamos encurtado a duração do buffer, você pode controlar por quanto tempo seu job deve ser memorizado usando a API keepResultsForAtLeast() .

Nova API de teste ✨

Se você estiver usando o ListenableFuture com o WorkManager, o teste ficou mais fácil — a extensão do Kotlin TestListenableWorkerBuilder agora assume qualquer classe que estenda ListenableWorker, dando mais flexibilidade durante o teste.

Correções de bugs 🐛

Além dos novos recursos, essa versão também contém várias correções de bugs que melhoram a estabilidade, a confiabilidade e o desempenho do WorkManager. Você pode saber sobre todas as alterações e os bugs corrigidos nas notas da versão.

O que você pode fazer para melhorar o WorkManager

Contribua com o WorkManager pelo GitHub 👩‍💻

O WorkManager, assim como várias outras bibliotecas do Jetpack, pode aceitar contribuições via GitHub.

Alan Viverette escreveu uma postagem de blog completa sobre todo o processo.

Fale conosco quando algo der errado 📝

A maioria dos bugs corrigidos na versão 2.5.0 foi conhecida por meio das informações do Issue Tracker público.

A melhor forma de criar um problema para que possamos corrigi-lo é criar um problema que possamos reproduzir. Para nos ajudar a reproduzir um problema, recomendamos usar a amostra do WorkManager ou fornecer a sua própria amostra codificada com instruções na descrição do problema.

Essa é a hora certa para colocar mãos à obra e fazer aquela atualização da versão da biblioteca de seu app.

Share on Google+ Share on Twitter Share on Facebook
Google

2 comentários :

Ehsaas Program 8171 BISP disse...

This post saved me so much time. Get Cash Through BISP Appreciate it!

10 de março de 2025 às 10:01
Maria Jain disse...
Este comentário foi removido pelo autor.
4 de abril de 2025 às 12:19

Postar um comentário

  

Labels


  • +page 1
  • 20th Century Fox 1
  • A/B 1
  • Action 1
  • Action Console 1
  • Actions 3
  • Actions Console 1
  • Actions on Google 1
  • ActiveQA 1
  • Adaptive Battery 1
  • AddThis 1
  • ADK 1
  • ADL 1
  • Admin do Firebase 1
  • AdMob 6
  • Ads 2
  • AdWords 1
  • AdX 1
  • AI 4
  • algoritmo 1
  • AMP 6
  • AMP Linker 1
  • AMP Project 1
  • Analytics API 1
  • Android 58
  • Android 8.0 Oreo 1
  • Android 8.1 1
  • Android ADK 2
  • Android API 2
  • Android App Bundle 1
  • Android Dev Summit 1
  • Android Developers 23
  • Android Marshmallow 1
  • Android N 3
  • Android Nougat 2
  • Android P 3
  • Android P Beta 2 1
  • Android Preview 1
  • Android SDK 1
  • android studio 8
  • Android Studio 3.2 1
  • android wear 2
  • AndroidDev 6
  • AndroidX 1
  • Announcement 2
  • AoG 1
  • AoGDevs 1
  • api 15
  • API 25 1
  • API 28 1
  • APIs 4
  • Aplicativos 4
  • app 1
  • App Engine 1
  • Apple 1
  • apply 1
  • Apps 9
  • AR 1
  • ARCore 3
  • artificial intelligence 1
  • AsyncTask 1
  • AUC 1
  • AutoAugment 1
  • Avro 1
  • Awareness API 1
  • Biblioteca do Google 1
  • Big Data 1
  • BigQuery 1
  • BiometricPrompt 1
  • bitcode 1
  • Borg 1
  • Bot 1
  • bytecode Dalvik 1
  • C++ 1
  • câmera 1
  • CameraDevice 1
  • Canal Beta 1
  • canary 1
  • câncer de próstata 1
  • Capital One 1
  • Cast 1
  • CFI 1
  • Chrome 8
  • Chrome 68 1
  • Chrome Dev Summit 1
  • Chrome DevTools 1
  • Chrome OS 2
  • Chromecast 1
  • Chromium 2
  • CI 1
  • CLI 1
  • Cloud 6
  • Cloud Computing 1
  • Cloud Console 1
  • Cloud Dataflow 1
  • Cloud Developers 2
  • Cloud DLP 1
  • Cloud Firestore 1
  • Cloud Messaging 1
  • Cloud ML Engine 1
  • Cloud Scheduler 1
  • Cloud Shell 1
  • Cloud Source Repositories 1
  • Cloud Spanner 2
  • CodeSchool 1
  • código aberto 2
  • Compute Engine 1
  • ConfigMap 1
  • Container Builder 1
  • CPU 2
  • Crash Reporting 2
  • Crashlytics 3
  • credential api 1
  • criptografia 1
  • CSS 3
  • CSS Grid Layout 1
  • CSV 1
  • CTA 1
  • Curitiba 1
  • Dart API 1
  • Data Validation 1
  • DBAs 1
  • DCGAN 1
  • Desenvolvedores Google 11
  • Desenvolvimento 3
  • DevBusBrasil 1
  • DevBytes 2
  • Developer Bus 1
  • Developer Preview 1
  • developer quiz 1
  • DevFest 3
  • DevFest16 1
  • DevFest18 1
  • DevFestW 1
  • DFP 2
  • Dialogflow 1
  • DLP 1
  • DLS 1
  • documentação 1
  • Dragon Ball Legends 1
  • E2E 1
  • eclipse 1
  • end-to-end-encryption 1
  • Estimator 1
  • Estimators API 1
  • estudantes 1
  • Eventos 15
  • Famílias multilíngue 1
  • FCM 2
  • Featured 1
  • Firebase 24
  • Firebase Analytics 6
  • Firebase App Indexing 2
  • Firebase Cloud Messaging 5
  • Firebase Crashlytics 2
  • Firebase Dynamic Links 3
  • Firebase In-App Messaging 1
  • Firebase Invites 2
  • Firebase Lab 1
  • Firebase Links Dinamicos 1
  • Firebase Notifications 3
  • Firebase Remote Config 1
  • Flutter 3
  • FRR 1
  • G+ 1
  • game 1
  • game dev 3
  • Games 2
  • games services 1
  • GCloud 3
  • GCM 1
  • GCP 7
  • GDD 7
  • GDE 1
  • GDEs 1
  • GDG 12
  • GDG Curitiba 1
  • GDG Floripa 1
  • GDG OpenSampa 1
  • GDG Porto Alegre 1
  • GDG Recife 1
  • GDG SP 3
  • GDGs 1
  • GDL 1
  • Git 1
  • GitHub 1
  • GNMT 1
  • Google 3
  • Google Ad Manager 1
  • Google AI 1
  • Google Analytics 1
  • Google Assistant 1
  • Google Assistente 3
  • Google Brain 2
  • Google Cast SDK 1
  • google clou 1
  • Google Cloud 17
  • Google Cloud Certified 1
  • Google Cloud Healthcare API 1
  • Google Cloud Platform 3
  • google code-in 1
  • Google Developer Advocate 1
  • Google Developer Expert 1
  • Google Developers 11
  • Google Fotos 1
  • Google I/O 6
  • Google Play 16
  • Google Play Games services 1
  • Google Play Protect 1
  • Google Play Services 4
  • Google Slides 1
  • Google Speech 1
  • google summer of code 1
  • Google+ 2
  • Google+ sign-in 1
  • Googlers 1
  • GPU 2
  • GSuites 1
  • GUI 1
  • Hackathon 1
  • Hangouts 1
  • Hangouts Chat 1
  • HDR 1
  • High Quality Apps 2
  • HTML5 6
  • HTTP 3
  • HTTPS 2
  • HttpURLConnection 2
  • I/O 1
  • IA 2
  • Illusive Images 1
  • ImageReader 1
  • In-App Messaging 1
  • Inglês 1
  • Instant Apps 1
  • inteligencia artificial 1
  • IntelliJ REPL 1
  • IntentService 1
  • Interoperabilidade 1
  • IO Extended 1
  • IO13 1
  • iOS 9
  • IU 2
  • Java 1
  • Java 8 1
  • javascript 2
  • JPEG 1
  • JSON 2
  • Kaggle 1
  • kernel 1
  • Keyboard Map API 1
  • Knowledge Connectors 1
  • Kotlin 6
  • Kotlin da Udacity 1
  • Kubernetes 5
  • LangID 1
  • Launchpad 1
  • launchpad accelerator 2
  • Learning Augmentation 1
  • LEGO 1
  • Listas 1
  • ListFragment 1
  • LLVM 1
  • LTO 1
  • Machine Learning 2
  • Meetup 2
  • mensagens 1
  • Mentoria 1
  • Messaging 2
  • microsserviços 1
  • ML 2
  • ML Kit 1
  • Mobile 3
  • Mobile Ads SDK 1
  • Monetização 3
  • Monetize 3
  • MySQL 1
  • Native 1
  • Navigation Architecture Component 1
  • NES 1
  • Neto Marin 2
  • Next Level Apps 2
  • Next Level Tips 2
  • NNLM 1
  • Node.js 2
  • Notificações 1
  • novembro azul 1
  • Number Genie 1
  • Nuvem Profissional 1
  • OAuth 2
  • OAuth2 1
  • Open Images Extended 1
  • open source 3
  • Options Menu 1
  • Options Menu virtual 1
  • Orkut 2
  • Payment Request 1
  • pesquisa 1
  • PHA 1
  • Phone Gateway 1
  • PII 1
  • pixel 1
  • Play Academy 1
  • Play Console 1
  • Play Services 1
  • Playtime 2018 1
  • plug-in AMP 1
  • Porto Alegre 1
  • Preact 1
  • PRIV 1
  • program 1
  • progressive web apps 2
  • Push Notification 2
  • Python 1
  • QA 1
  • RA 2
  • Raspberry Pi 1
  • RBDMS 1
  • React 1
  • recording apis 1
  • remarketing 1
  • Remote Config 2
  • research 4
  • ResultReceiver 1
  • reward 1
  • RNN 2
  • Robolectric 4.0 1
  • RV 1
  • Sceneform 1
  • SDK 4
  • SDK Manager 3
  • Security 2
  • Server 1
  • service worker 1
  • sign-in 1
  • Sliding Tabs 1
  • Smartronix 1
  • social 6
  • Spark 1
  • SRE 1
  • Stack 1
  • Stack Overflow 1
  • Startups 2
  • Storage 2
  • story 1
  • Support Library 1
  • SurfaceView 1
  • Svelte 1
  • switch 1
  • Tag Manager 1
  • Tag Manager 360 1
  • tensorflow 5
  • TensorFlow Hub 2
  • TensorFlow Lite 1
  • TensorFlow Transform 1
  • Test Lab 2
  • Testes 1
  • TF Hub 2
  • tf.keras 1
  • TFDV 1
  • TFX 1
  • TI essencial 1
  • toolkit 1
  • tradução 1
  • TTS 1
  • Udacity 1
  • Universal Apps 1
  • Universal Sentence Encoder 1
  • user experience 1
  • ux 1
  • VectorDrawable 1
  • Velostrata 1
  • Volley 1
  • vr 2
  • vulnerabilidades 1
  • vulnerabilidades do Google 1
  • vulnerability 1
  • web 2
  • web dev 2
  • WebKit 1
  • webservice 3
  • when 1
  • WordPress 1
  • WorkerDOM 1
  • YouTube 4
  • YouTube API 1
  • YUV 1
  • Zomato 1


Archive


  •     2022
    • nov.
    • out.
    • jul.
    • jun.
    • mai.
    • abr.
    • mar.
    • fev.
    • jan.
  •     2021
    • dez.
    • nov.
    • out.
    • set.
    • ago.
    • jul.
    • jun.
    • mai.
    • abr.
    • mar.
    • fev.
    • jan.
  •     2020
    • dez.
    • nov.
    • out.
    • set.
    • ago.
    • jul.
    • jun.
    • mai.
    • abr.
    • mar.
    • fev.
    • jan.
  •     2019
    • dez.
    • nov.
    • out.
    • set.
    • ago.
    • jul.
    • jun.
    • mai.
    • abr.
  •     2018
    • dez.
    • nov.
    • out.
    • set.
    • ago.
    • jul.
    • jun.
    • mai.
    • abr.
    • mar.
    • fev.
  •     2017
    • ago.
    • jul.
    • jun.
    • mai.
    • abr.
    • mar.
    • jan.
  •     2016
    • dez.
    • nov.
    • out.
    • set.
    • ago.
    • jul.
    • mai.
    • mar.
  •     2014
    • jul.
    • jun.
    • abr.
    • mar.
    • fev.
  •     2013
    • dez.
    • nov.
    • out.
    • set.
    • ago.
    • jul.
    • jun.
    • mai.
    • mar.
    • fev.
    • jan.
  •     2012
    • nov.
    • jul.
    • jun.
    • mai.
    • abr.
    • mar.
  •     2011
    • nov.
    • set.
    • ago.
    • jul.
    • jun.

Feed

  • Google
  • Privacy
  • Terms