- Forum-Beiträge: 16
16.07.2010, 00:24:28 via Website
16.07.2010 00:24:28 via Website
ich bin zur Zeit dabei, meine erste App zu schreiben. Sie ist zwar nur für private Zwecke, soll aber dennoch mit Funktionen nicht geizen (man will ja dabei auch etwas lernen ).
Dabei soll ein Background Service immer wieder, z. B. über einen Timer, bestimmte Daten einer Webseite (viel mehr meine Nachrichten aus einem Browserspiel ) auslesen und in eine SQLite-DB schreiben. Diese wird dann wiederum bei Bedarf von entsprechenden Activities ausgelesen.
Nun möchte ich aber auch, dass die Activities mir in irgendeiner Form (z. B. durch eine Animation) visuell signalisieren, wenn der Service gerade ein Update macht, während ich mich "in der App befinde".
Zudem möchte ich über die App auch "manuell" ein Update anstoßen, sowie den Service starten und beenden können.
Um das Auslesen (parsen) sowie die DB-Geschichten mache ich mir keine Sorgen, der Teil läuft schon super ;-)
Aber ich habe ziemliche Probleme mit dem Timer des Service und der Kommunikation zwischen Service und Activities, bzw. dem User.
Ich lasse mir testweise aus der run()-Methode des Timers (über einen vom Service erstellten Handler) Toast-Messages anzeigen, damit ich sehe, wie zuverlässig die Updates laufen. Während ich an meinem Handy herumspiele, ist die Welt in Ordnung. Wenn es nun aber für eine Weile in den (Tief-)Schlaf fällt, und ich es dann wieder "wecke", kommen oft mehrere Toast-Meldungen hintereinander. Werden hier nur die Toast-Messages über Handler.post() in eine Art Queue gesteckt, die dann erst wieder abgearbeitet wird, wenn ich das Handy "wecke", oder verzögert hier tatsächlich der Timer seine Aufrufe? Auf jeden Fall mache ich hier wohl etwas falsch
Die nächste Fragen sind also:
Wie kommuniziere ich richtig zwischen Service und Activities, respektive GUI?
Sollte das über IPC gehen, oder geht das auch wirklich ohne (zumal der Service ja auch wirklich NUR etwas mit dieser einen App zu tun hat)?
Ich habe zu dem Thema (ohne IPC) schon das eine oder andere Tutorial gesehen und auch danach gearbeitet, aber das scheint ja nicht so wirklich zu funktionieren.
Apropos Tutorials:
Kennt Ihr so richtig gute Tutorials oder Lektüren, am Besten mit praxisnahen Beispielen, zu diesem Thema?
Habe glaube in den letzten Tagen das halbe Netz durchkämmt und nichts brauchbares gefunden
Wäre schön, hier bei AndroidPIT im Wiki oder Forum etwas entsprechendes auffinden zu können
Mir geht erstmal hauptsächlich darum, wie man - wenn man schon den Service an die Activities binden kann - wie ich dann dem Service sage, dass er an eine Activity gebunden ist und daher der Activity eine Art "Update-Event" schicken soll, wenn er gerade updated, bzw. einen neuen Update-Vorgang anstößt. Oder andersrum: Kann ich den Service von Activity-Seite her "pollen", ob er gerade beim Updaten ist?
Und wie kann ich den Service von den Activities aus zum erneuten Updaten bewegen?
Laut Doku soll es ja ok sein, einfach nochmal startService() oder bindService() mit einem entsprechenden Intent aufzurufen, währen der Service läuft...?
Uiii... das war jetzt viel!
Ich hoffe daher, dass es an Details nicht mangelt
Vielen Dank schon mal für's Durchlesen
Liebe Grüße
Benjamin Stelter
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.