我正想把头缠在Dagger2上。我无法理解如何为整个应用程序共享的依赖项提供参数。这是我想到的(这些只是我正在使用的虚拟类,因此我可以理解这些概念):
{
"configurations": [
{
"name": "Win32",
"browse": {
"path": [
"${workspaceFolder}"
],
"limitSymbolsToIncludedHeaders": true
},
"includePath": [
**REDACTED**
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"compilerPath": "C:\\AndroidTools\\android-ndk-r13b\\toolchains\\llvm\\prebuilt\\windows-x86_64\\bin\\clang.exe",
"intelliSenseMode": "clang-x64",
"cStandard": "c11",
"cppStandard": "c++17"
}
],
"version": 4
}
这是东西:
我希望class Token(val token: String)
class File @Inject constructor(@param:Named("token") val token: Token)
@Component(modules = arrayOf(SessionModule::class))
interface SessionManager {
fun file(): File
}
@Module
class SessionModule {
@Provides @Singleton fun provideToken(token: String) = Token(token)
}
是一个单例,以便始终为请求会话的人提供相同的令牌。但我也希望能够根据需要更新令牌。我该怎么做?我曾考虑过创建一个将变量保存在provideToken
类中的静态变量,但是我认为这可以快速实现意大利面条式代码。
答案 0 :(得分:0)
恕我直言,你不应该这样做,不要注入动态的东西。 String
,List<String>
之类的东西不应被匕首注入。匕首用于注入静态和协作素材。
您可以将令牌存储在内存中,也可以SharePreference
以外的任何形式通过匕首保存。