2017-04-19 6 views
0

私はいくつかの断片でアクティビティを持っているアプリケーションがあります。その状態では簡単です。アクティビティでは、retrofitを使用して、REST APIにリクエストを行い、データを取得してから、bundleを使用してFragmentsに渡します。 (バンドルを使用しているオブジェクトのリストを渡すのは少し苦労しましたが、扱いやすいです)アクティビティでhttpリクエストを行い、データをFragmentに渡す必要がありますか?または、Fragmentで直接リクエストを行いますか?

問題はフラグメントごとにx秒ごとにリフレッシュするときに始まります。説明されている解決策では、すべての要求でフラグメントを再作成する必要があります。これは愚かです。フラグメントにAPIを休ませる

  1. メイクのすべての要求:

    は、だから私は2つのアイデアを持っています。しかし、私はそれが良い解決策とみなされるかどうかは分かりません。

  2. アクティビティですべてのリクエストを行い、EventBusライブラリを使用してデータを交換します。 (http://greenrobot.org/eventbus/

これらのアイデアの一つは良いですか、私は完全に異なる何かをする必要がある場合は、あなたが私に教えてくださいことはできますか?あるいは、さまざまなアプローチの長所と短所を教えてください。

お返事ありがとうございます!

+0

https://codelabs.developers.google.com /codelabs/android-testing/index.html?index=..%2F..%2Findex#0。彼らはモックテストにも役立つMVPを使用します。 – Raghunandan

答えて

1

フラグメントを他のアクティビティーと一緒に使用できるように、アクティビティーと疎結合させます。 Googleによる -

フラグメントUIコンポーネントを再利用するには、独自のレイアウトと動作を定義する、完全に自己完結型のモジュラーコンポーネントとして構築する必要があります。これらの再利用可能なフラグメントを定義したら、それをアクティビティに関連付けてアプリケーションロジックに接続して、総合的なUIを実現することができます。

続きを読む - https://developer.android.com/training/basics/fragments/communicating.html?hl=ru

断片からネットワークデータを要求することをお勧めします。また、ネットワークの呼び出しから受信したアクティビティのデータに依存する場合は、コールバックを使用してそのデータをアクティビティに戻すこともできます。

+0

意味があります!私はフラグメントでそれをやろうとします – R4v0

+0

@ R4v0 - それがあなたを助けたら答えを受け入れてください。ありがとう – Passiondroid

0

HTTPコールのサービスをお勧めします。サービスから非同期呼び出しを行い、アクティビティーまたはフラグメントでリスナー・インターフェースを実装することができます。そのリスナーはビューと対話できます。

+0

どこかでそのようなサービスをどのように実装するのがいいのか教えていただけますか? – R4v0

0

私は通常MmtBknに同意しますが、Retrofitを使用しているので、少なくともUIクラスからHTTPリクエストを実行するのは悪いことではないと思います。そして私の意見では、ロードされたコンテンツが表示されるビューが含まれているため、これらのリクエストはフラグメントから作成する必要があります。フラグメントを別のアクティビティに配置することを考えると、HTTP要求を実行するコードが重複し、データをイベントバス経由でFragmentに送信します。

関連する問題