2017-10-05 3 views
-2

私はメソッドに依存性の注入を持っていて、それはかなり遅いです 私は依存関係を非同期に注入しようとしましたが、正しく動作しません。 は、私はそれが「STEP1」 をログ出力しますが、私は、私はいくつかの小さな変更をした私の問題を解決 しても、これを見て持ってきたなぜDagger2の非同期依存関係注入が機能していないのですか?

@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) 
    } 
} 

答えて

0

を「STEP2」に印刷されません)(featuredCalendarでいくつかのログを持っていますサンプル 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()) } 
    } 
+0

Dagger2サポート非同期噴射は、https://google.github.io/dagger/producers.htmlを見てみましょう –

関連する問題