Auto-Sync

K

Kane2

Ambitioniertes Mitglied
8
Halli hallo,
ich hab mich mit Android App Entwicklung noch nicht allzu sehr auseinander gesetzt, aber da ich Java kann und man für die Android spezifischen Sachen gute Tutorials/ genug Anleitungen findet habe ich nur noch eine Frage.

Und zwar will ich ein Programm schreiben, dass automatsich etwas aktualisiert (aus dem Internet). Soviel ich weiß beendet Android aber auch mal Anwendungen, dass darf aber bei dem automatischen Aktualisieren natürlich nicht passieren. Jetzt ist meine Frage wie "umgehe" ich das ganze?

Google Mail oder WhatsApp aktualisieren sich auch automatisch. Am besten wäre, wenn ich das Programm sogar im Auto-Sync Menü von den Android Einstellungen registrieren könnte.

Ansonsten muss ich einen "Dienst" nutzen oder wie realisieren das Programme wie GoogleMail?

Also zusammengefasst: Programm soll ständig was aktualisieren und solange wie ich "will" im Speicher bleiben mit allen Variablen usw.

Vielen Dank
 
wenn dein programm die ganze zeit laufen würde, hätte dein akku keine freude


die beste lösung dafür:

du nutzt einen push-service ( c2dm von google oder sowas wie urban airship ). wenn es etwas zum aktualisieren gibt, schickst du einfach eine push nachricht zum gerät. Das startet dann einen Service, der im Hintergrund aktualisiert und die Daten speichert. Wenn der User dann die App wieder startet, hat er die neusten Daten.
 
swordi schrieb:
wenn dein programm die ganze zeit laufen würde, hätte dein akku keine freude
Es soll wie gesagt nur alle x Sekunden was aktualisieren und dann wars das.

swordi schrieb:
du nutzt einen push-service ( c2dm von google oder sowas wie urban airship ).

Wie genau funktioniert sowas denn? Ich mein man muss diesem Dienst (also jetzt z.B. C2DM) auch "sagen" was er aktualisieren soll und worauf er achten muss. Das ganze muss doch irgendwie programmiert werden, womit wird das gemacht?

swordi schrieb:
Das startet dann einen Service, der im Hintergrund aktualisiert und die Daten speichert. Wenn der User dann die App wieder startet, hat er die neusten Daten.

Also die Push-Nachricht wird an Android geschickt und dann startet sich erst ein Service? Muss ich diesen Service selber programmieren oder geschieht die Weiterleitung an das Programm automatsich durch die Registrierung des C2DM im Programm?
 
C2DM Tutorial

Was bedeutet denn "alle x Sekunden aktualisieren"? Möchtest du wirklich nach festen Zeiten was aktualisieren, z.B. Nachrichten? Oder änderst du z.B. im Server etwas und die App soll dies mitkriegen? Für 1. würde ich dann 'nen Service benutzen, allerdings wie du schon erkannt hast ist hier nicht garantiert, dass er nicht beendet wird - as intented ;)
 
wenn du nur alle X minuten aktualisieren willst, warum willst du dann aktualisieren, wenn der nutzer die app geschlossen hat?

dann interessieren ihn die nachrichten ja nicht. du kannst maximal dann eine benachrichtigung geben, dass es neuigkeiten gibt. daraufhin startet er die app und du kannst synchronisieren.

c2dm musst du natürlich am server eine routine erstellen, welche dann die devices benachrichtigt, wenn es was neues gibt. keine ahnung woher du daten nimmst, deshalb kann man dir auch keine exakteren anweisungen geben.

natürlich musst du den lokalen service selbst programmieren, woher soll das sonst kommen :)
 
sixi schrieb:

Googlen kann ich auch :flapper: :D. Ich wollte an für sich nur kurz das "Was" zusammengefasst haben, erstmal nicht das "Wie".

sixi schrieb:
Möchtest du wirklich nach festen Zeiten was aktualisieren, z.B. Nachrichten? Oder änderst du z.B. im Server etwas und die App soll dies mitkriegen? Für 1. würde ich dann 'nen Service benutzen, allerdings wie du schon erkannt hast ist hier nicht garantiert, dass er nicht beendet wird - as intented ;)

Soll auf ersteres hinaus. Wenn ich die Einleitung jetzt aber richtig gelesen habe läuft C2DM darauf hinaus: ICH habe einen Server der wenn etwas neues ankommt, dem C2DM Dienst sagt "Da is wat neues angekommen für User XY", C2DM schickt pusht dann eine Push-Nachricht an Android von User XY und die Anwendung nimmt diese Nachricht entgegen und ruft daraufhin den tatsächlichen Inhalt ab.



...würde dann rausfallen, weil ich nicht auf meinem eigenen Server etwas überprüfen will.

Doofe Frage: Aber wenn die Anwendung doch immer die Push Nachricht entgegennehmen kann, dann kann ich das doch auch irgendwie nutzen? Also "irgendwas" von der Anwendung die eine Push-Nachricht empfangen kann muss doch immer aktiv sein, also kann ich das doch bei meiner Anwendung genauso "irgendwie machen".

Kann ich denn gewährleisten, dass zumindestens aufjedenfall alle x Sekunden etwas abgerufen wird? Dann müsste ich zur Not den alten Status nach jedem abrufen abspeichern (auf SD) und wenn die Anwendung beendet wurde, fällt das ganze nach Ablauf der x Sekunden auf und ich kann den Status wieder auslesen.

swordi schrieb:
natürlich musst du den lokalen service selbst programmieren, woher soll das sonst kommen :)
Ich kann jetzt so schnell die ganzen Tutorials nicht lesen wie antwortet aber: Die Push Nachricht kommt doch "so" einfach an durch die paar Zeilen Code und das meiste ist, sowie ich das sehe, "vorgegeben". Man muss lediglich nur noch sagen, was er machen soll, wenn eine Nachricht ankommt, aber soviel selbst programmieren muss man da doch nicht oder vertue ich mich da gerade?

wenn du nur alle X minuten aktualisieren willst, warum willst du dann aktualisieren, wenn der nutzer die app geschlossen hat?

dann interessieren ihn die nachrichten ja nicht. du kannst maximal dann eine benachrichtigung geben, dass es neuigkeiten gibt. daraufhin startet er die app und du kannst synchronisieren.

Nimm zum Beispiel einfach mal diesen Thread hier: Ich will immer wissen, ob es einen neuen Beitrag hier gibt. Das mache ich einfach indem ich den Inhalt der Seite entsprechend filter und nachschaue, ob es einen Unterschied zur letzten Überprüfung gibt. Ob der Beitrag nun 0,5 Sekunden alt ist oder die Benachrichtigung (bei einem Intervall von 60s) nach spätestens 59,xxs erscheint interessiert mich nicht wirklich, aber ich will die Anwendung nicht immer starten müssen ansonsten würde ich etliche Beiträge verpassen können, weil ich seit 2 Stunden die Anwendung nicht gestartet habe

P.S: Danke euch beiden schonmal!
 
Zuletzt bearbeitet:
Doofe Frage: Aber wenn die Anwendung doch immer die Push Nachricht entgegennehmen kann, dann kann ich das doch auch irgendwie nutzen? Also "irgendwas" von der Anwendung die eine Push-Nachricht empfangen kann muss doch immer aktiv sein, also kann ich das doch bei meiner Anwendung genauso "irgendwie machen".
Die Push-Nachrichten werden von 'nem Google-Systemprogramm entgegengenommen und dann an deine App "weitergeleitet". Hat einfach den vorteil, dass nur eine permanente Verbindung offengehalten werden muss. Dementsprechen Batterieschonend.

"Garantieren" kannste die Ausführung wohl mit nem AlarmManger. Allerdings wie dort schon angemerkt:
The Alarm Manager is intended for cases where you want to have your application code run at a specific time, even if your application is not currently running. For normal timing operations (ticks, timeouts, etc) it is easier and much more efficient to use Handler.
 
Kane2 schrieb:
Nimm zum Beispiel einfach mal diesen Thread hier: Ich will immer wissen, ob es einen neuen Beitrag hier gibt. Das mache ich einfach indem ich den Inhalt der Seite entsprechend filter und nachschaue, ob es einen Unterschied zur letzten Überprüfung gibt. Ob der Beitrag nun 0,5 Sekunden alt ist oder die Benachrichtigung (bei einem Intervall von 60s) nach spätestens 59,xxs erscheint interessiert mich nicht wirklich, aber ich will die Anwendung nicht immer starten müssen ansonsten würde ich etliche Beiträge verpassen können, weil ich seit 2 Stunden die Anwendung nicht gestartet habe

P.S: Danke euch beiden schonmal!

ja das is klar, aber du musst nicht die app nach jedem neuen beitrag aufs neue aktualisieren lassen.

aktualisieren solltest du nur, wenn der nutzer die daten auch benötigt. es reicht, wenn du ihm einen hinweis gibts, dass es neue daten gibt (das bezieht sich natürlich nur darauf, wenn der user die app geschlossen hat)

wenn die app offen ist, kannst du die daten sowieso öfters abrufen, oder auf nen aktualisieren button hören.

wenn es zb innerhalb eines tages 10 neue nachrichten gibt. der user die app aber nie öffnet, würde es nach deiner methode bei jeder neuen nachricht komplett synchronisieren.

meine methode würde nur einmal die daten synchronisieren, nämlich dann, wenn der user die app zum nächsten mal startet.

ist halt dann ne design frage, wie man es umsetzt
 
swordi schrieb:
aktualisieren solltest du nur, wenn der nutzer die daten auch benötigt. es reicht, wenn du ihm einen hinweis gibts, dass es neue daten gibt (das bezieht sich natürlich nur darauf, wenn der user die app geschlossen hat)

Richtig, aber woher soll mein Android wissen, ob es was neues gibt, wenn er die Seite nicht aktualisiert? Die Seite muss doch so oder so abgerufen werden ansonsten bräuchte ich extra einen eigenen Server der ständig online ist und das überprüft und dann per Push benachrichtigen. Das Problem ist nunmal das es nicht mein Server ist also muss zwangsweise es immer in einem bestimmten Interval überprüft werden, weil ich den Server nicht so einstellen/programmieren kann,dass er den C2DM Push Dienst nutzt.
 
Ja dann wird blöd kann aber niemand wissen wenn du das nicht vorher erwähnst

Ist halt je nach anwendungsfall unterschiedlich zu implementieren
 
Steht in der Nachricht von 11:28 Uhr schon drin ;-).

Was wäre dann denn jetzt zusammenfassend die beste Möglichkeit für mich um die Aktualisierung durchgehend zu gewährleisten?
 
Hallo nochmal,
darf ich hier mal pushen? Weiß nämlich immer noch nicht wie ich das angehen soll.
 

Ähnliche Themen

Laser5001
  • Laser5001
Antworten
2
Aufrufe
898
Laser5001
Laser5001
E
  • emergentvillage
Antworten
1
Aufrufe
909
pueh
pueh
G
Antworten
5
Aufrufe
869
jogimuc
J
Zurück
Oben Unten