1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

Auto-Sync

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von Kane2, 27.08.2011.

  1. Kane2, 27.08.2011 #1
    Kane2

    Kane2 Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    85
    Erhaltene Danke:
    8
    Registriert seit:
    10.08.2010
    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
     
  2. swordi, 27.08.2011 #2
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    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.
     
  3. Kane2, 27.08.2011 #3
    Kane2

    Kane2 Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    85
    Erhaltene Danke:
    8
    Registriert seit:
    10.08.2010
    Es soll wie gesagt nur alle x Sekunden was aktualisieren und dann wars das.

    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?

    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?
     
  4. sixi, 27.08.2011 #4
    sixi

    sixi Erfahrener Benutzer

    Beiträge:
    237
    Erhaltene Danke:
    64
    Registriert seit:
    20.01.2009
    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 ;)
     
  5. swordi, 27.08.2011 #5
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    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 :)
     
  6. Kane2, 27.08.2011 #6
    Kane2

    Kane2 Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    85
    Erhaltene Danke:
    8
    Registriert seit:
    10.08.2010
    Googlen kann ich auch :flapper: :D. Ich wollte an für sich nur kurz das "Was" zusammengefasst haben, erstmal nicht das "Wie".

    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.

    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?

    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: 27.08.2011
  7. sixi, 27.08.2011 #7
    sixi

    sixi Erfahrener Benutzer

    Beiträge:
    237
    Erhaltene Danke:
    64
    Registriert seit:
    20.01.2009
    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:
     
  8. swordi, 27.08.2011 #8
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    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
     
  9. Kane2, 27.08.2011 #9
    Kane2

    Kane2 Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    85
    Erhaltene Danke:
    8
    Registriert seit:
    10.08.2010
    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.
     
  10. swordi, 27.08.2011 #10
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    Ja dann wird blöd kann aber niemand wissen wenn du das nicht vorher erwähnst

    Ist halt je nach anwendungsfall unterschiedlich zu implementieren
     
  11. Kane2, 27.08.2011 #11
    Kane2

    Kane2 Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    85
    Erhaltene Danke:
    8
    Registriert seit:
    10.08.2010
    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?
     
  12. Kane2, 21.09.2011 #12
    Kane2

    Kane2 Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    85
    Erhaltene Danke:
    8
    Registriert seit:
    10.08.2010
    Hallo nochmal,
    darf ich hier mal pushen? Weiß nämlich immer noch nicht wie ich das angehen soll.
     

Diese Seite empfehlen