2011-02-10 1 views
0

J'ai 2 onglets dans mon application, on attrape mes contacts et géocode leurs codes postaux, l'autre onglet les trace sur une carte.Quand des tâches (potentiellement) plus longues devraient-elles avoir lieu?

Le processus de géocodage peut prendre beaucoup de temps. Quelle est la meilleure pratique pour gérer de tels processus de longueur?

Devrais-je avoir une barre de chargement lorsque l'application démarre et faire tout le géocodage alors ou devrais-je forcer les utilisateurs à cliquer sur un bouton pour faire le géocodage?

Répondre

1

Vous devez déplacer toute opération qui prend plus de 200 ms sur un thread séparé, afin que l'application ne se verrouille pas, puis mettre à jour un indicateur pour afficher la progression de l'utilisateur.

Vous avez besoin d'en savoir plus sur la classe AsyncTask, il est absolument essentiel pour écrire des applications Android adaptées.

http://developer.android.com/reference/android/os/AsyncTask.html

Il est un emballage assez simple que fait enfiler facilement. N'oubliez pas d'arrêter les discussions quand elles ne sont plus nécessaires, par ex. dans onPause(). J'ai tendance à placer des sous-classes AsyncTask dans leur propre fichier de classe (pas comme une classe interne) et à leur passer un contexte d'activité en tant que paramètre constructeur, donc le thread AsyncTask a toujours un accès facile à l'interface utilisateur mais PAS de doInBackground).

Quelques limites de AsyncTask

http://foo.jasonhudgins.com/2010/05/limitations-of-asynctask.html

Questions connexes