我正在开发一个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 {
...
}
答案 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