129 votes

AsyncTaskLoader vs AsyncTask

Depuis Honeycomb et de la v4 Compatibility Library il est possible d'utiliser AsyncTaskLoader. Ce que je comprends, l' AsyncTaskLoader peut survivre à travers les modifications de configuration comme écran pivote.

Est-il recommandé d'utiliser AsyncTaskLoader au lieu de AsyncTask? N' LoaderManager obtenir dans l'image?

Mais je n'ai pas trouvé de bon exemple(s) sur la façon d'utiliser correctement l' AsyncTaskLoader. Les docs ne donnent pas non plus d'exemples. Quelqu'un peut-il fournir de bons exemples.

51voto

Nikolay Elenkov Points 32843

Vous pouvez avoir un coup d'oeil à la bibliothèque de compatibilité du code source pour obtenir plus d'infos. Quel FragmentActivity n'est:

  • gardez une liste d' LoaderManagers'
  • assurez-vous qu'ils ne se détruit lorsque vous retournez votre téléphone (ou un autre changement de configuration se produit) par des économies d'instances à l'aide d' onRetainNonConfigurationInstance()
  • coup de pied le droit chargeur lorsque vous appelez initLoader() de votre Activité

Vous devez utiliser l' LoaderManager d'interface avec les chargeurs, et de fournir le nécessaire rappels pour créer votre chargeur(s) et remplir vos points de vue avec les données de leur retour.

En général, il devrait être plus facile que la gestion de l' AsyncTask'vous-même. Toutefois, AsyncTaskLoader n'est pas exactement bien documenté, de sorte que vous devriez étudier l'exemple de la doc et/ou le modèle de votre code après l' CursorLoader.

17voto

Juozas Kontvainis Points 3294

AsyncTaskLoader est un peu plus facile à travailler, parce que vous n'avez pas à écrire le code qui gère l'activité des modifications de configuration. Cependant, AsyncTaskLoader a certaines limitations - vous ne pouvez pas modifier des fragments dans les onLoadFinished, par exemple, vous ne pouvez pas rejeter DialogFragment avec indicateur de progrès si vous avez décidé de vous montrer l'un pendant que des données sont en cours de chargement. Fondamentalement AsyncTaskLoader est prévu de charger des données pour DataAdapters et si vous voulez seulement que le - grand, c'est ce que je recommanderais. Si vous avez besoin de changements de l'INTERFACE après chargement des données - AsyncTask peut-serveur-vous mieux, surtout si vous travaillez avec des fragments, mais n'oubliez pas de gérer l'activité des modifications de configuration.

15voto

Exception Al Points 3432

Je sais je suis deux ans plus tard, mais je voulais juste partager ce très bon article sur le sujet, pour les futurs visiteurs.

http://www.javacodegeeks.com/2013/01/Android-loaders-versus-asynctask.html

-1voto

Femi Points 42054

Il y a un exemple parfait état au début de la Javadoc pour AsyncTaskLoader: cela fonctionne-t-il ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X