Dagger 2-在运行时注入对象

时间:2019-06-02 11:04:05

标签: java android dagger-2

我有一个使用dagger 2进行依赖项注入的基本应用程序设置,它包含以下代码,用于将对象简单地注入到main活动中,我想动态地注入一个可以在运行时更改的对象。例如:-当用户输入车轮数量时,创建一个可编辑且可重新注入的车辆对象实例。然后在整个活动生命周期中使用该载具对象。

@Singleton
@Component(modules ={AppModule.class})
public interface AppComponent {
    void inject(MainActivity mainActivity);
}

---------------------------------------------

@Module
public class AppModule {
    private final Application application;
    private static final String BASE_URL = "BASE_URL";

    AppModule(Application application) {
        this.application = application;
    }

    @Provides
    @Singleton
    Application application() {
        return application;
    }


    @Provides
    @Named(BASE_URL)
    String providesBASE_URL() {
        return AppUtils.BASE_URL;
    }
}
---------------------------------------------

public class TestApplication extends Application{
    private AppComponent appComponent;
    private TestApplication mContext;

    @Override
    public void onCreate() {
        super.onCreate();
        appComponent = DaggerAppComponent.builder()
                .appModule(new AppModule(this))
                .build();
        mContext = this;
    }

    public AppComponent getAppComponent() {
        return appComponent;
    }

    public TestApplication getmContext() {
        return mContext;
    }

}

然后我使用

在“活动和片段”中构建appcomponent
 ((TestApplication) getApplication()).getAppComponent().inject(this);

0 个答案:

没有答案