Überlegungen zum Android-Design: AsyncTask vs Service (IntentService?)

Ich entwerfe eine Android-App, die die folgenden Schritte ausführen muss:

user drückt eine Taste oder zeigt auf andere Weise an, dass Daten synchronisiert werden sollen.sync-Prozess verwendet REST-Webdienste, um Daten zum und vom Server zu verschieben. Die Daten werden lokal in einer SQLite-Datenbank gespeichert.der Synchronisierungsprozess sollte Statusaktualisierungen / -meldungen an die Benutzeroberfläche sendens sollte dem Benutzer nicht gestattet sein, zu anderen Teilen der Anwendung zu wechseln und während des Synchronisierungsvorgangs mehr Arbeit zu leiste

Der erste Synchronisierungsvorgang kann 10-20 Minuten dauern. Nach der ersten Synchronisierung werden weniger Daten übertragen und gespeichert, und ich erwarte, dass der Vorgang 1-2 Minuten oder weniger dauert.

Ich habe viel über Android's @ gelesAsyncTask und verschiedene Beispiele für die Verwendung eines Dienstes ... Aber ich verstehe die Überlegungen zum Design und die Kompromisse bei der Auswahl eines Designs gegenüber dem anderen nicht vollständig. Ich habe derzeit mein Demo-Projekt mit einer AsyncTask gestubbt. Nach dem Anschauen von (den meisten) Entwickeln von Android-REST-Client-Anwendungen:http: //code.google.com/events/io/2010/sessions/developing-RESTful-android-apps.html Ich bin immer noch verwirrt, die hier beschriebenen Designmuster fühlen sich zu komplex an, vielleicht weil ich sie noch nicht verstanden habe.

Ich komme aus Java, Spring, Web und Desktop. Das Denken und Entwerfen in Bezug auf ein Handheld-Gerät ist für mich ziemlich neu. (Was passiert, wenn das Bildschirmlayout geändert wird? Was passiert, wenn das Telefon klingelt, während ich eine Synchronisierung durchführe?) Wenn Sie zwei Schritte zurückgehen, wenn die anfängliche Synchronisierung so lange dauert, gibt es eine bessere Möglichkeit für ich über das problem nachdenken-> lösung, die benutzererfahrung, die benutzererwartungen einer auf einem telefon laufenden anwendung?

Würde gerne von erfahrenen Android-Entwicklern hören, die sich bereits mit diesen Fragen auseinandergesetzt haben.

Antworten auf die Frage(10)

Ihre Antwort auf die Frage