Android App im Hintergrund Service/BroadcastReceiver

  • Antworten:2
  • Bentwortet
boenz
  • Forum-Beiträge: 2

21.02.2020, 11:47:40 via Website

Hallo ihr Lieben,

ich habe mich neu im Forum angemeldet, weil ich ein kleines allgemeines Problem bei der Android Programmierung habe, was ich bisher nicht lösen konnte.

Ich habe eine App programmiert, die über API-Schnittstelle eines kleineren unbekannteren Webportals, Preise zu Artikeln ausliest und diese dann über SQL Lite speichert. So habe ich die Möglichkeit mir eine Preishistorie über längere Zeit anzeigen zu lassen und unter gewissen Umständen erhalte ich Pushnachrichten, um mich über Preisänderungen zeitnah zu informieren.

Das funktioniert alles wunderbar, jedoch nur, wenn ich die Applikation auf dem Mobiltelefon auch gestartet habe.

Ich hätte nun gerne aber eine Funktion, die ähnlich wie WhatsApp im Hintergrund abfragt, ob zum Beispiel Preisänderungen stattgefunden haben, da ich die App ja nicht rund um die Uhr laufen lassen möchte (zumindest nicht im Vordergrund).

Ich habe versucht mich hier mal drüber schlau zu machen und dazu die Klassen Service und Broadcastreceiver gefunden. Ich habe mich dazu mal ein bisschen belesen, wollte aber mal fragen, ob ich damit grundsätzlich das erreiche, was ich möchte?

Wenn ich richtig verstanden habe, dann läuft der Service im Hintergrund tatsächlich ab und der Broadcastreceiver meiner Applikation kann diese Informationen dann aufnehmen und verarbeiten, richtig?

Des weiteren frage ich mich, ob es gut ist die ganzen Ermittlungsroutinen auf dem Handy ablaufen zu lassen. Da ich in Zukunft noch einige Foren implementieren möchte (Stichwort Crawler) glaube ich, dass sich das ganz schön auf den Akku auswirkt.

Ich habe zu hause ein NAS, dass auch als Webserver fungieren kann und überlegt, ob es eine Möglichkeit gibt, eine App zu programmieren, die auf dem Server läuft und Berechnungen durchführt und meine Applikation quasi nur noch einen Listener auf Rückmeldungen hat.
Bin ich da auf dem falschen Dampfer oder ist das so möglich, wie ich mir das denke?

Vielen Dank im Voraus für eure Nachrichten.

Kommentieren
Beste Antwort
Rafael K.
  • Forum-Beiträge: 2.359

21.02.2020, 12:04:46 via Website

Die neueren Android Version sind was Hintergrund-Aktivität angeht sehr stringent. Es gibt drastische Einschränkungen.
Es gibt eine offizielle Bibliothek von Google, die die Planung von Hintergrundaufgaben recht gut abstrahiert - den WorkManager:

https://developer.android.com/topic/libraries/architecture/workmanager

Damit kannst du Aufgaben anhand von Bedingungen planen z.B. abhängig davon, ob Netzwerk vorhanden ist, das Gerät grade lädt, etc.

Wenn du wirklich viel Arbeit machen willst, mit der Garantie, dass dein Service nicht vom Betriebssystem gekillt wird, musst du eine Foreground-Notification verwenden. Das macht WhatsApp-Web und jeder Audio-Player ja auch.
Für einen kurzen Netzzugriff und Speichern in der DB sollte der WorkManager aber reichen.

Weitere Möglichkeit ist, dass du auf dem Gerät gar keine periodische Hintergrund Arbeit startest, sondern das Gerät mit einer Push-Notification per Firebase aufweckst.
In der Empfang-Logik kannst du dann ebenfalls kurz auf Netzwerk/DB zugreifen, oder bereits in der Push-Nachricht alle Daten mitsenden, die in die DB geschrieben werden müssen.

— geändert am 21.02.2020, 12:05:46

Hilfreich?
Ludyboenz
Kommentieren
boenz
  • Forum-Beiträge: 2

21.02.2020, 13:49:43 via Website

Moin Rafael,

danke ich werde mich mal in den Workmanager einlesen. Klingt genau nach dem, was ich gesucht habe.

Hilfreich?
Kommentieren