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

? Macarse @ | Original: StackOverFlow

Ziemlich einfach . Was ist der Unterschied zwischen diesen drei ?

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

Top 5 Antwort

1Pentium10 @

managedQuery() Wird ContentResolver der Abfrage verwenden (). Der Unterschied ist, dass mit managedQuery() die Aktivität eines Referenz, um Ihre Cursor und schließen Sie sie bei Bedarf ( in onDestroy() zum Beispiel ). Wenn Sie tun query() sich selbst, müssen Sie den Cursor als eine Verwaltung empfindliche Ressource. Wenn Sie es in vergessen, zum Beispiel auf close() onDestroy(), Werden Sie zugrunde liegenden Ressourcen Leck ( Logcat wird Sie warnen, darüber.)

Um einen Inhaltsanbieter abzufragen, können Sie entweder die ContentResolver.query() Methode oder die Methode Activity.managedQuery() zu verwenden. Beide Methoden nehmen die gleichen Argumente und sowohl ein Cursor-Objekt zurück. Doch managedQuery() bewirkt, dass die Tätigkeit, um die Lebensdauer der Cursor zu verwalten. Ein Managed Cursor verarbeitet alle Feinheiten wie Entladen selbst wenn die Aktivität Pausen und Neuabfragen selbst wenn die Aktivität neu gestartet. Sie können eine Aktivität fragen Verwaltung einen nicht verwalteten Cursor-Objekt für Sie, indem Sie Activity.startManagingCursor() um zu beginnen.

Update:

managedQuery Wird nun (ab Android 3.0 ) veraltet.

2user979247 @

managedQuery (..) wird nun (ab Android 3.0 ) veraltet. Achtung ..

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