AndroidInjector.Builder
弃用的警告是什么意思,我该如何解决?
AppComponent.kt
@Component(modules = [AndroidInjectionModule::class, AppModule::class])
@Singleton
interface AppComponent : AndroidInjector<App> {
@Component.Builder
abstract class Builder : AndroidInjector.Builder<App>() {
@BindsInstance
abstract fun application(@ApplicationContext context: Context)
@BindsInstance
abstract fun baseUrl(@Named("baseUrl") baseUrl: String): Builder
@BindsInstance
abstract fun secret(@Named("secret") secret: String): Builder
override fun seedInstance(instance: App) {
application(instance)
}
}
}
App.kt
class App : DaggerApplication(), HasAndroidInjector {
@Inject
lateinit var androidInjector: DispatchingAndroidInjector<Any>
override fun applicationInjector(): AndroidInjector<out DaggerApplication> {
return DaggerAppComponent.builder()
.baseUrl(SdkConstants.BASE_URL)
.secret(BuildConfig.SECRET)
.create(this)
}
override fun onCreate() {
super.onCreate()
}
override fun androidInjector() = androidInjector
}
[我相信我现在有答案,@Component.Builder
被替换为:
@Component.Factory
interface Factory {
fun create(@BindsInstance @ApplicationContext context: Context,
@BindsInstance @Named("baseUrl") baseUrl: String,
@BindsInstance @Named("secret") secret: String): AppComponent
}
应用的applicationInjector
被替换为:
override fun applicationInjector(): AndroidInjector<out DaggerApplication> {
return DaggerAppComponent.factory().create(this, SdkConstants.BASE_URL, BuildConfig.SECRET)
}