managedQuery() と context.getContentResolver.query() と android.provider.something.query() の比較 質問する

managedQuery() と context.getContentResolver.query() と android.provider.something.query() の比較 質問する

とても簡単ですね。この3つの違いは何でしょうか?

デバイス内のすべての画像を一覧表示したいのですがmanagedQuery()android.provider.MediaStore.Images.Media.query()と のどちらを使用すればよいでしょうか。context.getContentResolver.query()

ベストアンサー1

managedQuery()ContentResolverのquery()を使用します。違いは、managedQuery()アクティビティがカーソルへの参照を保持し、必要に応じて閉じることです(たとえばonDestroy())。自分で行う場合はquery()意思カーソルを機密リソースとして管理する必要があります。たとえば、 でカーソルを忘れると、close()基礎onDestroy()となるリソースがリークされます (logcat で警告が表示されます)。

コンテンツ プロバイダーを照会するには、 メソッドContentResolver.query()またはActivity.managedQuery()メソッドのいずれかを使用できます。 両方のメソッドは同じ引数セットを受け取り、どちらも Cursor オブジェクトを返します。 ただし、managedQuery()ではアクティビティが Cursor のライフ サイクルを管理します。 管理された Cursor は、アクティビティが一時停止したときに自身をアンロードしたり、アクティビティが再開したときに自身を再照会したりするなど、すべての細かい処理を行います。 を呼び出すことで、アクティビティに管理されていない Cursor オブジェクトの管理を開始するように要求できますActivity.startManagingCursor()

アップデート:

managedQuery現在は非推奨となっています(Android 3.0 以降)。

おすすめ記事