2017-10-09 5 views

Répondre

1

Si vous passez le même ID chaque fois que vous appelez

restartLoader(int id, Bundle args, LoaderCallbacks<D> callback) 

il sera RÉUTILISATION le même objet de chargeur. Mais si vous passez un nouveau ID il va créer un nouvel objet Loader. La façon dont cela fonctionne à partir de la vérification de la documentation this quote from the documentation:

Lance un nouveau ou redémarre un chargeur existant dans ce gestionnaire, enregistre les callbacks à lui, et (si l'activité/fragment est actuellement démarré) commence le charger. Si un chargeur ayant le même identifiant a déjà été démarré, il sera automatiquement détruit lorsque le nouveau chargeur aura terminé son travail. Le rappel sera livré avant que l'ancien chargeur ne soit détruit.

Mais vous n'avez pas à creuser en profondeur sur ce point car le ID est ce qui compte à partir de ce guide de documentation, check the Loader Summary Here:

Pour démarrer le chargement de données à partir d'un chargeur, appelez soit initLoader() ou restartLoader(). Le système détermine automatiquement si un chargeur avec le même ID entier existe déjà et créera un nouveau chargeur ou réutilisera un chargeur existant.

Donc, en bref, si vous passez un ID différent, il va créer un nouveau chargeur, mais si vous passez le même ID il utilisera le même chargeur. Mais rappelez-vous Cursors ne sont pas réutilisés.