我刚开始用dagger2学习DI。不确定如何将用户凭据传递给Retrofit ServiceGenerator。
以下是我在模块中提供改装依赖性的方法
@Provides
@Singleton
APIService provideAPIService() {
return ServiceGenerator.createService(APIService.class,"", "");
}
createService方法接受三个参数:服务,用户名和密码。我目前正在传递一个空字符串,因为目前不需要进行身份验证。这用于创建帐户。
这是我在我的存储库中获取依赖项的方法:
@Inject
APIService mAPIService;
@Inject
SharedPrefsHelper mSharedPrefsHelper;
@Inject
AppDatabase mAppDatabase;
@Inject
Context mContext;
@Inject
public SignupRepositoryImpl(AppDatabase appDatabase, APIService
apiService,SharedPrefsHelper sharedPrefsHelper, Context context){
this.mAppDatabase = appDatabase;
this.mAPIService = apiService;
this.mSharedPrefsHelper = sharedPrefsHelper;
this.mContext = context;
}
现在,假设用户拥有登录凭据,如何修改模块中的ServiceGenerator依赖关系以包含用户提供的用户名和密码?
我想过修改模块以包含两个这样的参数:
@Provides
@Singleton
APIService provideAPIService(String username, String Password) {
return ServiceGenerator.createService(APIService.class, username, password);
}
但我不知道从哪里开始,我如何在运行时传递参数?此外,用户可能会错误地输入错误的凭据,我需要知道如何使ServiceGenerator无效并传入不同的凭据。
PS:我不确定我是否提供了足够的信息,请提出任何要求。