Dagger 未使用的@Binds 方法
Unused @Binds methods with Dagger
我对启动画面的定义如下Activity:
@Subcomponent(modules = arrayOf(
SplashActivitySubcomponent.ComponentModule::class)
)
interface SplashActivitySubcomponent : AndroidInjector<SplashActivity> {
@Subcomponent.Builder
abstract class Builder : AndroidInjector.Builder<SplashActivity>()
@Module
abstract class ComponentModule {
@Binds
@IntoMap
@ActivityKey(SplashActivity::class)
abstract fun bindSplashActivityInjectorFactory(builder: SplashActivitySubcomponent.Builder): AndroidInjector.Factory<out Activity>
}
}
我没有Activity中的片段。发生的事情是 bindSplashActivityInjectorFactory
未被使用。问题是我无法摆脱它,否则应用程序会在运行时崩溃。
使用
@Suppress("unused")
还不够,因为我仍然收到来自 kotlin-lint 的警告。
不用的时候为什么要定义这个方法?我该怎么做才能避免警告?
这是我得到的错误:
UnnecessaryAbstractClass - [ComponentModule] at
com/xxxx/splash/di/SplashActivitySubcomponent.kt:20:5
OptionalAbstractKeyword - [bindSplashActivityInjectorFactory] at
com/xxxx/splash/di/SplashActivitySubcomponent.kt:22:9
现在我解决了这个问题:
@Subcomponent(modules = arrayOf(SplashActivitySubcomponent.ComponentModule::class))
interface SplashActivitySubcomponent : AndroidInjector<SplashActivity> {
@Subcomponent.Builder
abstract class Builder : AndroidInjector.Builder<SplashActivity>()
@Module
@Suppress("UnnecessaryAbstractClass", "OptionalAbstractKeyword")
abstract class ComponentModule {
@Suppress("unused")
@Binds
@IntoMap
@ActivityKey(SplashActivity::class)
abstract fun bindSplashActivityInjectorFactory(builder: SplashActivitySubcomponent.Builder): AndroidInjector.Factory<out Activity>
}
}
所以我刚刚添加:
@Suppress("UnnecessaryAbstractClass", "OptionalAbstractKeyword")
我对启动画面的定义如下Activity:
@Subcomponent(modules = arrayOf(
SplashActivitySubcomponent.ComponentModule::class)
)
interface SplashActivitySubcomponent : AndroidInjector<SplashActivity> {
@Subcomponent.Builder
abstract class Builder : AndroidInjector.Builder<SplashActivity>()
@Module
abstract class ComponentModule {
@Binds
@IntoMap
@ActivityKey(SplashActivity::class)
abstract fun bindSplashActivityInjectorFactory(builder: SplashActivitySubcomponent.Builder): AndroidInjector.Factory<out Activity>
}
}
我没有Activity中的片段。发生的事情是 bindSplashActivityInjectorFactory
未被使用。问题是我无法摆脱它,否则应用程序会在运行时崩溃。
使用
@Suppress("unused")
还不够,因为我仍然收到来自 kotlin-lint 的警告。 不用的时候为什么要定义这个方法?我该怎么做才能避免警告?
这是我得到的错误:
UnnecessaryAbstractClass - [ComponentModule] at com/xxxx/splash/di/SplashActivitySubcomponent.kt:20:5
OptionalAbstractKeyword - [bindSplashActivityInjectorFactory] at com/xxxx/splash/di/SplashActivitySubcomponent.kt:22:9
现在我解决了这个问题:
@Subcomponent(modules = arrayOf(SplashActivitySubcomponent.ComponentModule::class))
interface SplashActivitySubcomponent : AndroidInjector<SplashActivity> {
@Subcomponent.Builder
abstract class Builder : AndroidInjector.Builder<SplashActivity>()
@Module
@Suppress("UnnecessaryAbstractClass", "OptionalAbstractKeyword")
abstract class ComponentModule {
@Suppress("unused")
@Binds
@IntoMap
@ActivityKey(SplashActivity::class)
abstract fun bindSplashActivityInjectorFactory(builder: SplashActivitySubcomponent.Builder): AndroidInjector.Factory<out Activity>
}
}
所以我刚刚添加:
@Suppress("UnnecessaryAbstractClass", "OptionalAbstractKeyword")