将类注入服务

时间:2018-10-21 20:29:06

标签: android mvvm service kotlin background

我正在开发一个Android应用,并且我在MVVM模式中使用了Dagger,Databinding等。

目前,我有一个称为DataManager的网络层,该网络层会在每个ViewModel中注入。这个Datamanager类是向我的服务器发出请求的类。

看起来像这样

enum status: [:unknown_status, :eligible_status, :certified_status]

一切都可以很好地处理片段/活动,但是现在我想启动服务并在后台发出请求,但是我不确定如何将我的数据管理器类注入服务中。 < / p>

服务如下:

   @Singleton
    class DataManager @Inject constructor(context: Context, private val sharedPreferences: ISharedPreferences, private val apiHelper: APIHelper) : IDataManager {
...
    }

1 个答案:

答案 0 :(得分:1)

与使用@ContributesAndroidInjector的活动/片段相同的方式

您的应用程序模块:

@Module(
    includes = [AndroidSupportInjectionModule::class,
        ActivityBuilderModule::class, ServiceBuilderModule::class, ...]
)
abstract class ApplicationModule {
...
}

您的服务子组件:

@Module
abstract class ServiceBuilderModule {
    @ContributesAndroidInjector
    abstract fun contributeUploadService(): UploadService
}

然后您可以注入:

class UploadService : BaseTaskService() {
    @Inject
    lateinit var dataManager: DataManager
    ...
} 

让您的类BaseTaskService继承自DaggerService或在其AndroidInjection.inject(this)方法中添加onCreate

相关问题