7

ListFragmentビューとより詳細なFragmentビューの2つのフラグメントを持つ(master-detail)ビューを作成しています。リスト内のアイテムをクリックすると、詳細ビ​​ューが表示されます。ListFragmentの場合、クエリを管理するためにLoaderManagerとCursorLoaderを使用しています(この件に関するAlex Lockwoodの投稿の優れたガイドラインに従っています)。

(リストビューをクリックして)「詳細」ビューを表示する場合は、同じコンテンツプロバイダーにクエリを実行し、1行の情報を取得する必要があります。これをどのように処理するのが最善かわかりません。

基本的に1行を取得しているので、カーソルをすぐに解放できます。

  • ストレートのgetContentResolver()。query()を使用して、カーソルを直接操作する必要がありますか?
  • 別のLoaderManagerを使用して、カーソルと結果を管理しますか?
4

1 に答える 1

1

LoaderManagerを使用します。

リストビューでローダーを作成するのと同じ理由で、詳細ビューでローダーを作成する必要があるのと同じ理由があります。UIが応答しなくなるのを防ぐために、重い操作はバックグラウンドスレッドに配置する必要があります。データベースの相互作用もその規則の例外ではありません。データがすぐに読み込まれるように見えるかもしれませんが、実際には、UIスレッドで直接重い作業を行っているため、UIに不要なパフォーマンスが発生する可能性があります。

プロジェクトバター、よ

さらに、結果を保持するLoaderManagerの追加の利点が得られます。したがって、データをローテーションしてリロードすると、すべてのデータを自分で保持する必要はなく、キャッシュされた結果がロードされます。

于 2013-01-29T20:03:16.267 に答える