简体   繁体   English

为什么 Dagger2 中的异步依赖注入不起作用?

[英]Why async dependency injection in Dagger2 is not working?

I have dependency injection in method and it was quite slow that is why I tried to inject dependencies async, but it's not working properly.我在方法中进行了依赖注入,而且速度很慢,这就是为什么我尝试异步注入依赖项,但它无法正常工作。 I have some logs in the featuredCalendar() it prints log "step1" but doesn't print "step2"我在 featuresCalendar() 中有一些日志,它打印日志“step1”但不打印“step2”

@Singleton 
@Provides 
fun apiDaysSeResource(retrofit: Retrofit): Observable<ApiDaysSeResource{ 
return Observable.create(ObservableOnSubscribe<ApiDaysSeResource> { 
retrofit.create<ApiDaysSeResource>(ApiDaysSeResource::class.java) 
}).subscribeOn(Schedulers.io()) 
.observeOn(AndroidSchedulers.mainThread()) 
}

public interface ApiDaysSeResource {
@GET("dagar.json?")
Single<FeaturedCalendar> days(@Query("fran") String fran, @Query("till") String till, @Query("key") String key, @Query("id") String id);
}



@Singleton
@Provides
 fun vacationRepository(apiDaysSeResource: Observable<ApiDaysSeResource>): VacationRepository {
return VacationRepository(apiDaysSeResource)


 }




class VacationRepository(private val apiDaysSeResource: Observable<ApiDaysSeResource>) {
fun featuredCalendar(from: String, till: String, key: String, id: String): Flowable<FeaturedCalendar> {
Log.i("time_test", " step1")
return apiDaysSeResource.flatMapSingle { apiDaysSeResource ->
  Log.i("time_test", " step2")
  apiDaysSeResource.days(from, till, key, id)
}.toFlowable(BackpressureStrategy.BUFFER)
  }
}

I have solve my problem I did some small changes and also have a look at this sample https://github.com/frogermcs/Dagger2Recipes-AsyncInjection我已经解决了我的问题我做了一些小改动,也看看这个示例https://github.com/frogermcs/Dagger2Recipes-AsyncInjection

@Singleton
@Provides
fun apiDaysSeResource(retrofit:Retrofit):ApiDaysSeResource{
return retrofit.create(ApiDaysSeResource::class.java)}

 @Singleton
@Provides
fun  apiDaysSeResourceObservable(apiDaysResource: Lazy<ApiDaysSeResource>): Observable<ApiDaysSeResource> {
return Observable.defer { Observable.just(apiDaysResource.get()) }
  }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM