5

だから私は今週末、Mortar と Flowに多くの時間を費やしてきました。主に、Mortar が大きく依存している Dagger の ObjectGraph Scoping についてよく理解していなかったため、最初に考えていたよりも少し複雑であることがわかりました。私はこれについて Dagger のサイトで見つけられる限り多くのことを読みましたが、特に Dagger に関連する場合、この主題に関する情報が不足していることに気づきました。

だから私はいくつかの質問があります: 1. @Singleton のスコープの例を見る:

@Layout(R.layout.screen_friend)
public class FriendScreen implements Blueprint {

  @Override public String getMortarScopeName() {
    return getClass().getName();
  }

  @Override public Object getDaggerModule() {
    return new Module();
  }

  @dagger.Module(
      injects = FriendView.class
  )
  static class Module {
  }

  @Singleton
  public static class Presenter extends ViewPresenter<TestView> {

    @Inject
    public Presenter() {
      Log.d("FriendScreen", "Friend Presenter Created");
    }

    @Override protected void onLoad(Bundle savedInstanceState) {
      super.onLoad(savedInstanceState);
    }
  }

この場合のプレゼンターは、内部クラスであるため、特にこのモジュールにスコープされていますか? 2. そのインスタンスがこのオブジェクト グラフでのみ作成され、グローバル アプリケーション オブジェクト グラフでは作成されないことを確認するにはどうすればよいですか? 2. プレゼンターが大きすぎて、別のクラスに移動したい場合はどうすればよいですか? このモジュールだけにスコープを設定するにはどうすればよいですか? 3. サンプルの Module クラスのいくつかは静的であり、他のものはそうではないことに気付きました。これはスコーピングに影響しますか? 4. Dagger のオブジェクト グラフをよりよく理解するための詳細情報はどこで入手できますか? include、inject、addsTo、およびそれらが ObjectGraph の作成などでどのように使用されるかについて、よりよく理解する必要があります。

@dagger.Module( //
      includes = ActionBarModule.class,
      injects = MainView.class,
      addsTo = ApplicationModule.class, //
      library = true //
  )
4

1 に答える 1