mvpでは、アクティビティの参照を弱参照に保存します。 WeakReference<Activity> view = new WeakReference<Activity>(activity);
参照が失われた場合。それを取り戻すことはできますか?Android MVP WeakRefrence
答えて
MVP
にActivity
への参照を保存する必要はないと思いますが、それは難しいか弱いかは関係ありません。
この参照をPresenter
に保存しているとします。レイヤーを実際にデカップリングするには、View
(Activity
)を表すインターフェイスを作成し、アクティビティの代わりに使用する必要があります。
だから、あなたがしたい:
public interface LoginView {
displayUsernameError(String error);
displayPasswordError(String error);
openMainScreen();
}
あなたActivity
は、上からインターフェイスを実装する必要があります。あなたのプレゼンターで
public class LoginActivity implements LoginView {
...
}
あなたが持っていると思います:
class LoginPresenter {
private LoginView mView;
public LoginPresenter(LoginView view) {
mView = view;
}
public onLoginButtonClicked(String username, char[] password) {
...
mView.openMainScreen();
}
}
これを行うための即時の利点:
異なる層が本当にデカップリングされています。
Activity
を変更することができます(代わりにFragments
を使用することにします)。Presenter
に触れないでください。あなたの発表者は
JUnit
を使用して完全にテスト可能です!あなたの相互作用が正しいことを確認するために何かを使用する必要はありません、LoginView
を模擬するために単なる平文Mockito
。
もう一つのポイントは、注意する - あなたはあなたのPresenter
あなたView
をより長生きしてもよろしいですか?回避できない状況がいくつかありますが、ほとんどの場合、寿命が同じです。View
が破壊された場合は、Presenter
も同様です。
mViewはLoginActivityの強力なリファレンスです。 – Ricardo
- 1. Android MVP:インタラクタとは何ですか?
- 2. Android MVPオープンプレゼンターからのアクティビティ、アンチパターン?
- 3. MVP
- 4. MVPデザインジレンマ
- 5. MVP:プレゼンター
- 6. MVPは
- 7. MVP - モデルビュープレゼンター
- 8. MVP用タリゲントプログラミングモデル
- 9. エディタフレームワークとMVP
- 10. SharePoint WebParts MVPパターン
- 11. MVP in Winforms
- 12. FxCopの+ MVP:
- 13. MVPのMVCチュートリアル
- 14. プレゼンテーションモデルとMVP(パッシブビュー)
- 15. AndroidアプリのMVPパターンを定義する際の問題
- 16. MVPパターン - デザイン質問
- 17. デスクトップモノラルアプリケーションとMVC/MVPフレームワーク
- 18. MVPフローの質問
- 19. GWTウィジェットライブラリとMVPパターン
- 20. MVPでサブビューをロードする
- 21. MVP GWT - EventBus注入問題
- 22. GWT 2.2.0とサードパーティのMVPフレームワーク
- 23. MVP、Winforms - イベントハンドラまたはデリゲート
- 24. GWT MVP履歴戻る
- 25. MVC/MVP/MVVM何なのか?
- 26. GWT、MVP - 多くのウィジェット、ベストプラクティス
- 27. GWT MVP。イベントバスの使い方
- 28. WPF MVPパターンとLinq to SQL
- 29. GWTのMVP。複雑なビュー
- 30. MVP GWTプロジェクトのヘッダー/フッター
"新しく作成したビューを添付する方法が必要です"とはどうすればいいですか? あなたの答えはそれほど多くありません –
@MethnaniBilel解決するのは複雑な問題です...どのように解決したのかを見るために、mosbyやnuclesを見てください。 – LordRaydenMK