[Android] Wie mache ich meine Hintergrundabfrage am besten?

Frazer1

Lieutenant
Registriert
März 2013
Beiträge
637
Hallo allerseits.

Ich bin grade an meiner ersten App und zwar soll sie mir einfach eine Benachrichtigung schicken wenn sich auf dem Vertretungsplan meiner Klasse etwas ändert. Die Oberfläche hab ich soweit hinbekommen, allerdings läuft die Hintergrundabfrage mehr schlecht als recht. Es kommt immer wieder vor das mir gesagt wird das der Vertretungsplan aktualisiert wurde, obwohl das nicht stimmt.

Bisher hatte ich einen IntentService der im OnHandle nach dem last-modified Header des Online-Vertretungsplan guckt und so weiß ob es neue Daten gibt. Der Service wird dann im AlarmManager mit einem Intervall von 5min eingetragen.
Allerdings scheint es mir so als ob er den gespeicherten lastModified manchmal zwischen den Aufrufen durch den AlarmManagers "verliert" und dann kommt natürlich die Info, dass es neue Daten gibt.
Hier ist auch meine Frage wie speicher ich den Wert am besten? Einfach als Variable im Service? Immer als SharedPreference speichern und auslesen?
Und allgemein ob das überhaupt so sinnvoll gelöst ist oder ob ich hier eine ganz falsche Struktur aufbaue (also ob IntentService + AlarmManager hierfür eine sinnvolle Kombination ist)?


Ich hoffe ich hab das verständlich rüber gebracht. Wenn nicht, fragt einfach!
Auch hoffe ich das ihr mir hier helfen könnt oder mir zumindest Denkanstöße geben könnt die mich in die richtige Richtung führen.

Viele Grüße
Frazer
 
müsstest glaube ich schon was detaillierter beschreiben wie das ganze abläuft und wo daten abgespeichert werden.
 
Warum so kompliziert?

In den Vertretungsplan baust du ein, dass beim hinzufügen/löschen/ändern eines Eintrags die Google Cloud Message API getriggert wird.

Die App muss dann nur eines können, nämlich als Cloud Message Client herhalten.

Dazu brauchst du auch keine Jobs die in irgendwelchen Intervallen checken ob was neues da ist oder nicht.

Leider fehlt mir die Erfahrung in der Android Entwicklung aber dazu solltest du massig an Tutorials und Code-Schnippsel auf Stackoverflow finden.

Direkt von Google: https://developers.google.com/cloud-messaging/

(Ich hab sowas ähnliches lediglich mal für meinen Videorecorder mit Pushbullet und Mailgun gebaut: Sende Push bzw. Email sobald eine Aufnahme beendet ist bzw eine neue hinzugefügt wurde.)
 
Zuletzt bearbeitet:
Danke für deine Antwort. Cloud Message klingt interessant und ich werde es mir auf jeden Fall angucken. Das Problem ist, dass ich nur ein einfacher Schüler bin und keinen Zugriff auf den Server habe um die API zu benutzen.
Eine Möglichkeit wäre natürlich ein eigener Server der die Überprüfung macht und dann die API triggert...

@nik_
Kurz gesagt soll die App einfach nur den Quellcode des Online Vertretungsplan auswerten und mir so immer anzeigen wenn sich was ändert. Das einzige was gespeichert wird ist der TimeStamp der letzten Aktualisierung sowie meine Klasse. Und das speicher ich in SharedPreferences.
Hab aber meinen Fehler jetzt nach einer Ewigkeit endlich gefunden. Mir fehlte ein Dispose beim responeStream, so das es früher oder später immer zu Fehlern kam.

Ich glaub das ich früher oder später auf Cloud Message umsteige, dann fällt der ganze Kram hier ja weg

Danke
 
Zurück
Oben