1

以下で構成される単純なアプリがあるとします。

書籍のリストを表示するためのリスト ビューを持つ Fragment

フラグメントを保持するアクティビティ

表示する書籍のリストを取得するためにどこかのサーバーにクエリを発行する Web コンポーネント

これらのコンポーネントを一緒に配線する最良の方法は何ですか? いくつかのオプションが表示されますが、どれが最適ですか (これに関するベスト プラクティスはありますか)?

  1. アクティビティは Web サーバーにクエリを発行し (AsynTask / 新しいスレッドを介して)、結果をフラグメントにプッシュします。

  2. UI なしで別のフラグメントを作成し、この問題を AsyncTask / new Thread 経由でクエリに発行します (オプション 1 と同様ですが、画面の回転の問題で破棄されるアクティビティが削除されます)

  3. フラグメントは Web サーバーを直接呼び出し、アクティビティは何もしません

  4. インテント サービスを追加してクエリを実行し、結果を次のいずれかにブロードキャストします。

    a) アクティビティ - それらを Fragment にプッシュする

    b) フラグメントはブロードキャストを直接受信します

これらのいずれかが他のアプローチよりも優れていると考えられていますか?

さまざまなフラグメント関連の投稿で、「フラグメントをビューと見なし、アクティビティをコントローラーと見なす」と述べられているため、オプション 3 はあまり良い考えではないことが示唆されます。

オプション 2 は、アクティビティをコントローラーと見なすハイブリッドのように見えます。これは、「コントローラー」機能の一部を別のフラグメントに委任するようなものですが、決定的に「ビュー」フラグメントではありません。

オプション 4 は興味深いように思えますが、すべての結果をブロードキャストする必要があるという問題があります (一方、1 と 2 では実際のオブジェクトがあります)。LocalBroadcastManager を使用してブロードキャストをより効率的 (かつ安全) にすることはできますが、それでもすべての Web 結果をブロードキャストする必要があります。

軽量の Parcelable オブジェクトに変換される (たとえば) JSON メッセージではなく、イメージ (実質的なもの) をダウンロードするとしたらどうなるでしょうか?

私が言ったように、私はこれを行う多くの方法を考えることができます -正しい方法は何だと思いますか?

4

1 に答える 1

1

すべての問題はローダーで解決できます。それが彼らが設計されたものです。開発ガイドをチェックしてください: http://developer.android.com/guide/components/loaders.html

于 2014-08-06T20:24:52.090 に答える