とても簡単ですね。この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 以降)。