是否有人已经不得不使用 dagger 将已经存在的类以及一些业务逻辑注入(inject)到 BroadcastReceiver 中?
我正在使用 dagger 1,并且已经找到了一个很好的示例 (https://github.com/adennie/fb-android-dagger),但是我找不到如何将属于不同模块的现有类添加到 BroadcastReceiver。
任何帮助或建议将不胜感激。
最佳答案
将对象注入(inject)广播接收器的 Dagger 2 示例。
BroadcastReceiverModule.kt
@Module
abstract class BroadcastReceiverModule {
@ContributesAndroidInjector
abstract fun contributesMyTestReceiver() : MyTestReceiver
}
AppComponent.kt
@Singleton
@Component(
modules = [
(AndroidSupportInjectionModule::class),
(BroadcastReceiverModule::class)
])
interface AppComponent : AndroidInjector<MyApp> {
@Component.Builder
abstract class Builder : AndroidInjector.Builder<MyApp>()
}
应用类
class MyApp : DaggerApplication() {
override fun applicationInjector(): AndroidInjector<MyApp> =
DaggerAppComponent.builder().create(this@MyApp)
}
BroadcastReceiver 类
class MyTestReceiver : BroadcastReceiver() {
@Inject
lateinit var anInjectedObject: MyInjectObject
override fun onReceive(context: Context, intent: Intent) {
AndroidInjection.inject(this, context)
anInjectedObject.doSomthing()
}
}
关于android - 如何注入(inject)广播接收器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34001526/