custom - content provider sqlite android example



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

Ziemlich einfach. Was ist der Unterschied zwischen diesen drei?

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

https://ffff65535.com



managedQuery() verwendet die Abfrage () von ContentResolver. Der Unterschied ist, dass die Aktivität bei managedQuery() einen Verweis auf den Cursor onDestroy() und bei Bedarf onDestroy() (in onDestroy() ). Wenn Sie sich selbst query() , müssen Sie den Cursor als sensible Ressource verwalten . Wenn Sie beispielsweise vergessen, es in onDestroy() zu close() , werden die darunter liegenden Ressourcen auslaufen (logcat wird Sie darüber warnen.)

Um einen Inhaltsanbieter abzufragen, können Sie entweder die ContentResolver.query() Methode oder die Activity.managedQuery() Methode verwenden. Beide Methoden verwenden denselben Satz von Argumenten und beide geben ein Cursor-Objekt zurück. managedQuery() bewirkt jedoch, dass die Aktivität den Lebenszyklus des Cursors verwaltet. Ein verwalteter Cursor behandelt alle Feinheiten, z. B. das Entladen selbst, wenn die Aktivität angehalten wird, und sich neu anfordern, wenn die Aktivität neu gestartet wird. Sie können eine Activity auffordern, ein nicht verwaltetes Cursor-Objekt für Sie zu verwalten, indem Sie Activity.startManagingCursor() aufrufen.

Aktualisieren:

managedQuery ist jetzt veraltet (ab Android 3.0).





android