2017-01-20 2 views
-1

Similaire à doInBackground() de AsyncTask, la méthode de rappel du chargeur asynchrone onLoadFinished() s'exécute en arrière-plan et obtient la réponse de l'URL et alors la réponse est envoyée à onLoadFinished() de LoaderManager pour ajouter la réponse aux vues, qui peuvent ou ne peuvent pas s'exécuter sur le thread principal de l'interface utilisateur. similaire à onPostExecute(). Je voulais savoir quel est le véritable avantage ici si j'utilise AsynctaskLoader ou LoaderManagerMême doInBackground de AsyncTask s'exécute en arrière-plan, alors quel est l'avantage de la méthode LoadInBackground() du chargeur AsyncTask

+0

'AsyncTask' n'augure pas bien avec le cycle de vie d'activité. Par exemple, si 'AsyncTask' est en cours d'exécution et que l'utilisateur fait pivoter le périphérique et que l'activité est redémarrée, vous verrez un comportement étrange. La raison est que 'AsyncTask' reste accroché à l'instance précédente de l'activité qui a été détruite pendant onRotate. 'AsyncTaskLoader' a été conçu pour résoudre ce problème. –

Répondre

0

Il y a un but différent pour eux. LoaderManager userd pour charger des données à partir de certaines sources. Et AsyncTask vient de faire quelque chose en arrière-plan.

Here est une explication à cela. Comme vous pouvez le voir

  • Si vous allez chercher les données directement dans l'activité ou le fragment, vos utilisateurs souffriront d'un manque de réactivité due à l'exécution requêtes potentiellement lentes du thread d'interface utilisateur.
  • Si vous allez chercher les données d'un autre fil, peut-être avec AsyncTask, alors vous êtes responsable de la gestion à la fois le fil et le fil interface utilisateur à travers divers événements du cycle de vie d'activité ou de fragments, tels que OnDestroy() et les changements de configurations.

Et aussi

chargeurs résoudre ces problèmes et inclut d'autres avantages. Par exemple:

  • Les chargeurs s'exécutent sur des unités d'exécution séparées afin d'empêcher l'interface utilisateur nerveuse ou ne répondant pas. Les chargeurs simplifient la gestion des threads en fournissant des méthodes de rappel lorsque se produisent.

  • Les chargeurs sont conservés et mettent en cache les résultats lors des modifications de configuration afin d'éviter les requêtes en double.
  • Les chargeurs peuvent implémenter un observateur pour surveiller les changements dans la source de données sous-jacente. Pour exemple, CursorLoader enregistre automatiquement un ContentObserver à déclencher un rechargement lorsque les données sont modifiées.