Android Work Manager vs. Dienste?

Lesezeit: 3 Minuten

Benutzer-Avatar
Entehrt

In meiner Android-App habe ich mehrere Intent-Dienste, die nacheinander ausgeführt werden, und der allererste Intent-Dienst wird durch einen Broadcast ausgelöst. Ich bin gestoßen Arbeitsmanager vor ein paar Tagen und mochte die Einfachheit der Klassen Worker und WorkManager sehr. Was sind die Vor- und Nachteile von Work Manager gegenüber regulären Absichtsdiensten? Sollte ich jetzt zum Work Manager wechseln, wenn ich bedenke, dass ich in Zukunft möglicherweise mehr Intent-Services schreiben muss? Welche Option würde mir auch helfen, den Code einfach zu testen?

  • Benötigen Sie diese API, um Benachrichtigungen anzuzeigen?

    – IgorGanapolsky

    18. Februar 2020 um 18:12 Uhr

WorkManager verfügt über folgende Funktionen:

  • Bietet Aufgaben, die den Prozesstod überleben können
  • Es kann die App und den App-Prozess aufwecken, um die Arbeit zu erledigen, wodurch garantiert wird, dass die Arbeiten ausgeführt werden.
  • Ermöglicht die Beobachtung des Arbeitsstatus und die Möglichkeit, komplexe Arbeitsketten zu erstellen
  • Ermöglicht die Arbeitsverkettung, die es ermöglicht, einen großen Teil der Arbeit in kleine Arbeiten zu unterteilen und sie basierend auf verschiedenen Einschränkungen auszuführen
  • Verwaltet elegant den Doze-Modus oder andere vom Betriebssystem auferlegte Einschränkungen.

Im Folgenden sind die Fälle aufgeführt, in denen dies hilfreich wäre:

  • Ausführen lang andauernder Hintergrundaufgaben wie dem Hochladen von Medien
  • Analysieren und Speichern von Daten in der Datenbank.
  • Kritische Aufgaben, die den Prozesstod überleben müssen

Sollte ich jetzt zum Work Manager wechseln, wenn ich bedenke, dass ich in Zukunft möglicherweise mehr Intent-Services schreiben muss?

In den meisten Fällen sollte es ein Ersatz für IntentService sein, aber Sie müssen sorgfältig überlegen, bevor Sie es verwenden. Es könnte sein, dass IntentService von Anfang an nicht die beste Wahl war.

WorkManager ist keine Antwort auf alle Hintergrundaufgaben. ZB Sie sollten es nicht für die Verarbeitung von Zahlungen verwenden, da es den Prozesstod nicht überleben muss und diese Aufgaben sofort ausgeführt werden müssen. Erwägen Sie die Verwendung des Vordergrunddienstes. Es ist auch keine gute Idee, sie zum Analysieren von Daten und Inhalten der Ansicht zu verwenden.

Sie müssen wirklich abwägen, ob Sie Funktionen davon benötigen, bevor Sie es verwenden. Da Google die Art und Weise, wie wir codieren, fast überarbeitet, wäre WorkManager eine Lösung für unsere Probleme mit der Hintergrundverarbeitung. Sicherlich wäre dies die wichtigste Option, da sie die Handhabung mehrerer vom Betriebssystem auferlegter Einschränkungen abstrahiert. Sie sollten es für zukünftige Implementierungen verwenden.

Welche Option würde mir auch helfen, den Code einfach zu testen?

Google hat auch eine Testbibliothek bereitgestellt, die den Test von WorkManager erleichtert. Es befindet sich noch in der Entwicklung, sollte aber vor seiner Veröffentlichung leistungsfähiger werden.

  • Hallo, da die Methode doWork() sync ist, gibt es eine Möglichkeit, mit RxJava asynchron zu arbeiten oder nicht?

    – Mehdi Jahed Manesh

    22. Mai 2018 um 7:12 Uhr

  • @MehdiJahedManesh doWork() wird im Hintergrundthread ausgeführt.

    – Sagar

    22. Mai 2018 um 12:09 Uhr

  • @NicolasJafelle Ja. Sie können PeriodicWorkRequest verwenden. Die Aufgabe wird garantiert ausgeführt, auch wenn Ihre App zwangsweise beendet oder das Gerät neu gestartet wird

    – Sagar

    7. Juni 2018 um 23:28 Uhr


  • Gibt es einen Grund, noch zu verwenden IntentService heutzutage?

    – IgorGanapolsky

    18. Februar 2020 um 18:11 Uhr

  • Was ist mit kritischen Uploads, die etwa alle 5 Minuten ausgeführt werden sollen? Denn manchmal werden Worker pausiert, wenn der Nutzer die App sehr lange nicht öffnet. Ist es in einem solchen Fall ratsam, Dienstleistungen oder Arbeitskräfte zu haben?

    – Anirudh Ganesh

    13. November 2020 um 18:59 Uhr

1010460cookie-checkAndroid Work Manager vs. Dienste?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy