Android 如何在方法中注入依赖项?

Android 如何在方法中注入依赖项?,android,dagger-2,Android,Dagger 2,我是依赖注入的初学者。。特别是匕首2。我正在试图弄清楚我是否/如何能做这样的事情: @Inject public void someMethodName(int someInteger, SomeObject dependency){ // do something with the dependency. } 或者我需要将该依赖项作为类变量放入吗?在此方面的任何帮助都将不胜感激。在这种情况下,变量someInteger不是依赖项,而是由调用方添加的。。。那有关系吗 我可以这样称呼它吗:

我是依赖注入的初学者。。特别是匕首2。我正在试图弄清楚我是否/如何能做这样的事情:

@Inject
public void someMethodName(int someInteger, SomeObject dependency){
 // do something with the dependency. 
}
或者我需要将该依赖项作为类变量放入吗?在此方面的任何帮助都将不胜感激。在这种情况下,变量someInteger不是依赖项,而是由调用方添加的。。。那有关系吗

我可以这样称呼它吗:

this.someMethodName(5); 

android studio不喜欢上面的调用方法(我假设是因为我做错了)

您可以使用一些接口

public interface myDependence{
   int myFunction(int value);
}
现在在您的课堂上实施

public myClass implements MyDependence{
   @Override
   int myFunction(int value){
       // do something
   }
}
  • 您需要创建由@component注释的组件
  • 组件接受提供依赖项的模块
  • 您创建的每个组件的名称都以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);
       }
      }
    
    请参阅文档,了解可以获得哪些依赖项。除了获取原始实例之外,您还可以获取原始实例。

    您还可以创建作用域Dependenci,其生命周期取决于注入位置的生命周期,如

    希望我给了你匕首的基本概念