Je suis en train de concevoir une application Android qui devra effectuer les étapes suivantes :
- l'utilisateur appuie sur un bouton ou indique d'une autre manière qu'il veut "synchroniser les données".
- Le processus sync utilisera des services web REST pour déplacer les données vers et depuis le serveur.
- les données seront stockées localement dans une base de données sqlite.
- le processus de synchronisation doit fournir des mises à jour et des messages d'état à l'interface utilisateur.
- l'utilisateur ne doit pas être autorisé à s'égarer dans d'autres parties de l'application et à effectuer un travail supplémentaire pendant le processus de synchronisation.
La première fois que le processus de synchronisation s'exécute, cela peut prendre 10 à 20 minutes. Après la synchronisation initiale, moins de données seront transférées et stockées, et le processus de synchronisation prendra de 1 à 2 minutes. Je m'attends à ce que le processus prenne 1 à 2 minutes ou moins.
J'ai lu beaucoup de choses sur le système Android. AsyncTask
et divers exemples d'utilisation d'un service ... Mais je ne comprends pas bien les considérations de conception et les compromis à faire pour choisir une conception plutôt qu'une autre. J'ai actuellement mon projet de démonstration qui utilise une AsyncTask. Après avoir regardé (la plupart) Developing Android REST client applications : http://code.google.com/events/io/2010/sessions/developing-RESTful-Android-apps.html# Je suis confus, les modèles de conception décrits ici me semblent exagérés. complexes, peut-être parce que je ne les comprends pas encore.
Je viens de Java, de Spring, d'applications web et de bureau. Penser et concevoir en fonction d'un appareil portable est tout à fait nouveau pour moi. (Que se passe-t-il lorsque la disposition de l'écran est modifiée ? Que se passe-t-il lorsque le téléphone sonne alors que je suis en train d'effectuer une synchronisation ?) En prenant deux pas de recul, si la synchronisation initiale doit être un processus si long, y a-t-il une meilleure façon pour moi de penser au problème->solution, à l'expérience de l'utilisateur, aux attentes de l'utilisateur d'une application fonctionnant sur un téléphone ?
J'aimerais avoir l'avis de développeurs Android plus expérimentés qui se sont déjà penchés sur ces questions.