android - 如何注入(inject)广播接收器

标签 android dependency-injection broadcastreceiver dagger

是否有人已经不得不使用 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/

相关文章:

android - 将文件 PATH 转换为 TreeUri(存储访问框架)

vb.net - 首先使用 Entity Framework 5 数据库进行依赖注入(inject)。入门?

c# - ASP.Net Core 3.0 依赖注入(inject)忽略工厂方法?

android - 在 Android 中动态创建 BroadcastReceiver

android - 如何检测未接听的来电挂断。?

Android ViewSwitcher 在 TableLayout 中的单元格神奇地移动和隐藏

Android 应用程序无法正确卸载

android - 底部的灰色水平线前 Lollipop 卡片 View

dependency-injection - 在 .NET Core 中无需配置即可自动解析具体类?

Android 从另一个 Intent 服务启动一个新的 Intent 服务是否可以接受,以及如何在完成后通知服务?