1

私は依存性注入の初心者です..特にDagger 2.私は次のようなことができるかどうか/どのようにできるかを理解しようとしています:

@Inject
public void someMethodName(int someInteger, SomeObject dependency){
 // do something with the dependency. 
}

または、その依存関係をクラス変数として入れる必要がありますか? これについての助けをいただければ幸いです。また、この場合、変数 someInteger は依存関係ではありませんが、呼び出し元によって追加されています...それは問題ですか?

私はこのようにそれを呼び出すことができます:

this.someMethodName(5); 

Androidスタジオは上記の呼び出し方法が好きではありません(何か間違ったことをしているので推測しています)

4

2 に答える 2

1

一部のインターフェースを使用できます

public interface myDependence{
   int myFunction(int value);
}

今すぐあなたのクラスで実装してください

public myClass implements MyDependence{
   @Override
   int myFunction(int value){
       // do something
   }
}
于 2015-05-12T00:12:29.897 に答える
1
  1. @Component でアノテーションが付けられたコンポーネントを作成する必要があります。
  2. コンポーネントは、依存関係を提供するモジュールを受け入れます。
  3. 作成するすべてのコンポーネントの名前は、Dagger プレフィックス (MyComponent など) で始まります。

次の例を見てみましょう。

    @Singleton
    @Component(modules = DemoApplicationModule.class)
    public interface ApplicationComponent {
        void inject(DemoApplication application);
    }

シングルインジェクション方式で ApplicationComponent を作成しました。私たちが言っているのは、特定の依存関係を DemoApplication に注入したいということです。

さらに、@Componentアノテーションでは、プロビジョニング メソッドでモジュールを指定します。

これは、モジュールが次のように見えるようなものです。

@Module
public class DemoApplicationModule {
   private final Application application;

   public DemoApplicationModule(Application application) {
       this.application = application;
    }

  @Provides @Singleton SomeIntegerHandler provideIntegerHandler() {
       return new MySomeIntegerHandlerImpl();
  }
 }

DemoApplicationModule を作成することで私たちが言っていることは、モジュールがコンポーネントによって指定された注入場所で必要な依存関係を提供できるということです。

 public class DemoApplication extends Application {
   private ApplicationComponent applicationComponent;

   @Inject SomeIntegerHandler handler;

   @Override public void onCreate() {
     super.onCreate();
     applicationComponent = DaggerApplicationComponent.builder()
         .demoApplicationModule(new DemoApplicationModule(this))
         .build();
     applicationComponent.inject(this);
     handler.someMethodName(5);
   }
  }

どのような種類の依存関係を取得できるかについてのドキュメントを参照してください。さらに、生のインスタンスを取得するだけでなく、プロバイダー、ファクトリー、またはレイジーインスタンスを取得できます。 http://google.github.io/dagger/api/latest/dagger/Component.html

アクティビティやフラグメントのように、ライフサイクルが注入場所のライフサイクルに依存するスコープ依存関係を作成することもできます。

ダガーとは何かについての基本的な概念を教えていただければ幸いです。

于 2015-05-12T00:58:42.953 に答える