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

Lesezeit: 2 Minuten

Benutzer-Avatar
Macarse

Ziemlich einfach. Was ist der Unterschied zwischen diesen dreien?

Ich möchte jedes Bild in einem Gerät auflisten. Sollte ich es benutzen managedQuery(), android.provider.MediaStore.Images.Media.query() oder context.getContentResolver.query()

Benutzer-Avatar
Pentium10

managedQuery() verwendet die Abfrage() von ContentResolver. Der Unterschied besteht darin, dass mit managedQuery() Die Aktivität behält einen Verweis auf Ihren Cursor und schließt ihn bei Bedarf (in onDestroy() zum Beispiel.) Wenn ja query() du selbst, du Wille müssen den Cursor als sensible Ressource verwalten. Wenn Sie es beispielsweise vergessen close() es hinein
onDestroy()werden Sie zugrunde liegende Ressourcen verlieren (Logcat wird Sie davor warnen).

Um einen Inhaltsanbieter abzufragen, können Sie entweder die ContentResolver.query() Methode oder die Activity.managedQuery() Methode. Beide Methoden verwenden dieselben Argumente und geben ein Cursor-Objekt zurück. Jedoch, managedQuery() bewirkt, dass die Aktivität den Lebenszyklus des Cursors verwaltet. Ein verwalteter Cursor erledigt alle Feinheiten, wie z. B. das Entladen selbst, wenn die Aktivität angehalten wird, und das erneute Abfragen, wenn die Aktivität neu gestartet wird. Sie können eine Aktivität bitten, mit der Verwaltung eines nicht verwalteten Cursor-Objekts für Sie zu beginnen, indem Sie aufrufen Activity.startManagingCursor().

Aktualisieren:

managedQuery ist jetzt veraltet (ab Android 3.0).

  • @ Pentium10: Großartig! Und Unterschied zwischen der Verwendung von android.provider.MediaStore.Images.Media.query() und context.getContentResolver.query()?

    – Makarse

    7. April 2010 um 20:25 Uhr

  • Tut mir leid, das weiß ich nicht. Vielleicht gibt es das nicht.

    – Pentium10

    7. April 2010 um 21:05 Uhr

  • Kam wegen der Frage von @Macarse 🙁

    – MBillau

    23. Januar 2014 um 20:24 Uhr

  • @Macarse Es gibt keinen Unterschied, da der erste Parameter zu android.provider.MediaStore.Images.Media.query() ein ContentResolver ist. Die Methode ist nur ein Alias ​​für context.getContentResolver.query().

    – Onkel Code Monkey

    18. März 2014 um 9:21 Uhr

Benutzer-Avatar
Benutzer979247

managedQuery(..) ist jetzt veraltet (ab Android 3.0). Achtung..

Android-Fehler: java.lang.IllegalStateException: Versuch, einen bereits geschlossenen Cursor erneut abzufragen

1053700cookie-checkmanagedQuery() vs. context.getContentResolver.query() vs. android.provider.something.query()

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy