Local Service, einen Remote-Service oder einen Intent-Service ??

  • Hallo zusammen,


    nun stehe ich an dem Punkt meine erste App schreiben zu dürfen bzw. zu müssen. Dazu habe ich noch ein paar grundlegende Fragen bez. meines Konzepts.


    Auch nach vielem Lesen und Recherchieren bin ich mir noch in einem Punkt unsicher: Über welche Möglichkeiten bilde ich meine Hintergrundaktivitäten am besten ab.


    Die grundlegende Funktion der App versuche ich vereinfacht zu erklären:


    1. Der Benutzer erhält nach Programmstart eine Liste mit Einträgen vom Typ "Automarken" - diese werden aus einer lokalen SQLite Datenbank gelesen.
    2. Der Benutzer wählt ein "Auto" aus bzw. klickt darauf, und kann die technischen Daten zu diesem Auto ergänzen/abändern - dies wird wiederrum in der SQLite Datenbank gespeichert.
    3. Ein Hintergrundprozess vergleicht den Datenbestand mit einem Server und synchronisiert diesen bei Bedarf (nur bei Unterschieden bzw. werden Hashwerte vom lokalen Datenbestand und vom Datenbestan auf dem Server gebildet und verglichen)


    Lösung zu 1 und 2.
    Lese- und Schreibvorgänge in die Datenbank werden in einem AsyncTask abgebildet. Das Laden der Einträge in die Liste (ListActivity) wird über einen LoaderManager (inkl. Content Provider) realisiert - welcher meines Wissens nach sowieso einen "Hintergrundprozess" für die Datenabfrage initiiert:


    Java
    public class MyClass extends ListFragment
    								implements LoaderManager.LoaderCallbacks<Cursor>
    .....


    auch interessant:
    http://journeyman.janusz.de/?p=84


    Lösung zu 3.
    da ist der Knackpunkt....ich bin mir unsicher ob ich einen Local Service, einen Remote-Service oder einen Intent-Service nehmen soll bzw. was macht von der Implementierung her am meisten Sinn.


    Der Prozess muss lediglich einen Status zurück an das UI melden bzw. möchte ich diesen Status als Notification anzeigen. Ansonsten ist keine Kommunikation mit dem MainThread notwendig.


    Allerdings soll der Service auch eigenständig ausgeführt werden, wenn sich der Netzwerk-Status ändert: Ich abonniere im Manifest einen Broadcast Receiver (Connectivity_Change). Sobald ein Netzwerk verfügbar ist, soll der Service starten (ohne das zuvor logischerweisse die Applikation gestartet wurde) und versuchen die Daten zu übertragen (sofern der Server erreichbar ist).


    ein schöner Vergleich zwischen den einzelnen Möglichkeiten:


    http://techtej.blogspot.com/20…ead-constructspart-4.html


    Wie sind eure Erfahrungen bzw. wie würdet ihr das ganze realisieren...


    Danke und Grüße


    Koll.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!