46 votes

managedQuery() vs contexte.getContentResolver.query() vs android.fournisseur de.quelque chose.query()

Assez simple. Quelle est la différence entre ces trois?

Je veux la liste de chaque Image dans un appareil. Dois-je utiliser managedQuery(), android.provider.MediaStore.Images.Media.query() ou context.getContentResolver.query()

72voto

Pentium10 Points 68884

managedQuery() utilisera ContentResolver query(). La différence est que avec managedQuery() de l'activité de conserver une référence à votre Curseur et le fermer à chaque fois que nécessaire (en onDestroy() , par exemple.) Si vous n' query() vous-même, vous aurez à gérer le Curseur en tant que sensible à la ressource. Si vous oubliez, par exemple, close() dans onDestroy(), que vous ayez une fuite sous-jacent ressources (logcat vous avertira à ce sujet.)

Pour interroger un fournisseur de contenu, vous pouvez utiliser soit l' ContentResolver.query() méthode ou l' Activity.managedQuery() méthode. Les deux méthodes utilisent le même ensemble d'arguments, et tous deux retournent un objet Curseur. Toutefois, managedQuery() provoque l'activité pour gérer le cycle de vie du Curseur. Géré Curseur s'occupe de toutes les subtilités, comme les décharger lorsque l'activité s'arrête, et lancement d'elle-même lorsque l'activité redémarre. Vous pouvez demander à une Activité pour commencer à gérer un non géré objet Curseur pour vous en appelant Activity.startManagingCursor().

Mise à jour:

managedQuery est maintenant obsolète (Android 3.0).

23voto

user979247 Points 321

managedQuery(..) est maintenant obsolète (Android 3.0). Attention..

Android erreur: java.lang.IllegalStateException: tentez d'actualiser déjà fermé curseur

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