MrH*_*rio 3 java android dependency-injection dagger
我正在调整我的项目以使用 DI - 特别是 Dagger。我在注入类时没有问题,但是如何“注入”运行时生成的变量?
说,我想存储用户的登录会话对象,其中包含诸如api-token、之类的数据loggedUsername。当用户成功登录时,这个对象在运行时生成,在另一个负责这样做的类中。
作为一个例子,我想要的是简单地做这样的事情:
public class FooPresenter {
...
Session mSession;
@Inject FooPresenter(Session session, ...) {
mSession = session;
...
}
...
}
Run Code Online (Sandbox Code Playgroud)
提前致谢!
我最终在 Dagger 模块类中声明了一个方法来获取我的会话,String在SharedPreferences成功登录后我将其保留为输入。
这样,我就可以在任何需要的地方注入会话。
这是我的SessionDomainModule:
@Module(
library = true,
complete = false)
public class SessionDomainModule {
// TODO: Rethink this implementation.
@Provides
public Session provideSession(Application application) {
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(application);
String sessionJString = preferences.getString(AppConfig.PREF_KEY_CURRENT_SESSION, "");
Session session;
if(!"".equals(sessionJString)) {
return new Gson().fromJson(sessionJString, Session.class);
}
return null;
}
...
}
Run Code Online (Sandbox Code Playgroud)
通过这样做,我可以实现我想要的东西,并且我的问题中的类似代码最终可以工作。
| 归档时间: |
|
| 查看次数: |
1233 次 |
| 最近记录: |