まず、私は、どのようにモデルビュープレゼンターと異なる実装があり、そして私の心に限り、あなたは抽象化の層を持っていると明確に定義されていることを知っていて、その任命の役割をしていますこのパターンを実装するには解釈が可能です。私はかなりの数のアプリでこのパターンを実装していますが、そこにはただ一つのActivity
がありました。私は今、複数のアクティビティを持ち、ネストされたフラグメント(ViewPager
)を含むFragments
という新しいプロジェクトを開始しました。複数のアクティビティ/フラグメントおよびモデルビュープレゼンターパターン
私は今、このプロジェクトにMVPを翻訳しようとしていると私はコンセプトの壁にヒットしましたし、いくつかのガイダンスや洞察をしたいと思います。
これまでのところ、上記の構造を作成し、表示&プレゼンターとの1:1の関係を開始しました(Activity
またはFragment
に関係なく)。私はこれがOKだと思っていますが、例えば、私がActivity
から何かをするリクエストを送った場合、その結果をに返すプレゼンターへの表示結果を伝播する方法、つまり他のすべてのアクティビティ/フラグメント現在はPaused()
またはStop()
の状態ではありません。このケースでは、すべての必要なアクティビティーとフラグメントビューを更新する中央のPresenterが必要ですが、これを行う方法についてはわかりません。
現在各Activity
とFragment
が作成されるとき、それは、(アクティビティおよびフラグメントは、独自のインタフェースを実装する)を基準として自身を渡し、プレゼンタークラスの新しいインスタンスを作成するプレゼンタ格納WeakReference
などと呼び出すことができ結果を返すときは、関連するインタフェースメソッド。 Fragments
あなたはコールバックインタフェースを使用する必要があり、相互に通信したいとActivity
添付いつでもドキュメントによると
。これを念頭に置いて、アクティビティが実装するコールバックインターフェイスと、何かを要求するたびにFragments
コールバックを持つ必要があります。つまり、アクティビティのみが、プレゼンタとモデルレイヤを持ち、さまざまな要求を行うためにコールバックする必要があります?これは少し混乱に聞こえる場合
申し訳ありませんが、うまくいけば、これは私が達成したいかを理解するために十分明確である、と私は右の線に沿って考えているならば...または完全にマークオフ!
ご意見や考えをありがとう。私は、アクティビティでPresenterを使用して、そのフラグメントを更新するようにします。シングルトンでメモリリーク?これは、シングルトンがアクティビティまたはフラグメント(基本的にライフサイクルが出てきているもの)への参照を持っていた場合にのみ発生します。もしそうなら、私は何かのためにシングルトンを使用しますが、参照はありません。私は構成の変更に 'null'なので強い参照する必要はありませんように私は活動およびフラグメントと' WeakReferences'(ライフサイクルコールバックを使って何を)使用し、 'WeakReference'はGC –
することができますあなたのプレゼンターがシングルトンでないなら、あなたは「shouldn発表者自身も再作成されるため、構成の変更に関する問題はありません。ただし、保持されたフラグメントを使用する場合は、WeakReferenceが必要になることがあります。とにかく、弱い参照がどのように機能するかをはっきりと理解しているようですので、説明する必要はありません。ありがとうございます。プレゼンターは私は 'のHashMap <文字列オブジェクト>'レス内断片を保持し、そしてバック活性を有する構成の変更への参照を取得におけるそれの参照を格納作成された後 –
いいえプレゼンターは、シングルトンではありません。 ...私がJavaで何かを理解していると思うときは、いつも私にカーボールを投げているようです!アドバイスありがとうございます。 –