ManagedQuery () vs context.getContentResolver.query () vs android.provider.something.query ()

? Macarse @ | Original: StackOverFlow
---

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

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

---

Top 5 Répondre

1Pentium10 @

managedQuery() Va utiliser la requête de ContentResolver ( ) . La différence est que, avec managedQuery() l'activité gardera une référence à votre Curseur et fermez-le en cas de besoin ( dans « ____ », par exemple . ) Si vous faites onDestroy() vous-même, vous aurez à gérer le curseur en tant que ressources sensibles . Si vous oubliez, par exemple, à query() dans «____», Vous perdre des ressources sous-jacents ( logcat vous avertira à ce sujet.)

Pour interroger un fournisseur de contenu, vous pouvez utiliser la méthode close() ou la méthode onDestroy() . Les deux méthodes prennent le même ensemble d'arguments, et les deux retournent un objet curseur . Cependant, ContentResolver.query() provoque l'activité de gérer le cycle de vie du curseur . Un curseur géré occupe de toutes les subtilités, comme de se décharger lorsque l'activité se arrête, et se requerying au redémarrage de l' activité . Vous pouvez demander à une activité pour commencer à gérer un objet Cursor non géré pour vous en appelant «____» .

Update:

Activity.managedQuery() Est maintenant obsolète (à partir de Android 3.0 ) .

2user979247 @

ManagedQuery ( .. ) est maintenant obsolète (à partir de Android 3.0 ) . Attention ..

http://stackoverflow.com/questions/5915597/android-error-java-lang-illegalstateexception-trying-to-requery-an-already-clos