VacationFragment의 onAttach()에서 VacationViewModel -> VacationRepository, 에서 featuredDays()를 호출하고 있습니다. VacationFragment로 이동하는보기를 클릭하면 알림이 표시되고 지연이 열리 며 몇 밀리 초를 기다립니다. 그것은 VacationFragment를 엽니 다. 내가 vacationViewModel.featureDays (은 시작일, 종료일) 을 주석있을 때 그것은 전체 채팅/댓글을 읽는되지 않습니다 누군가를 위해 지연왜 개체를 주입하고 io() 스레드에서 API 호출을하면 조각 열기가 느려 집니까?
class MainApplication : Application(), HasActivityInjector, HasSupportFragmentInjector {
override fun onCreate() {
super.onCreate()
appComponent = DaggerAppComponent.builder().androidModule(AndroidModule(this)).build()
appComponent.inject(this)
}
class VacationFragment : Fragment() {
override fun onAttach(context: Context?) {
AndroidSupportInjection.inject(this)
super.onAttach(context)
vacationViewModel = ViewModelProviders.of(activity, icaViewModelFactory).get(VacationViewModel::class.java)
vacationViewModel.featureDays(startDate,endDate)}
}
class VacationViewModel : ViewModel(), AppComponent.Injectable {
private val disposables: CompositeDisposable = CompositeDisposable()
@Inject
lateinit var vacationRepository: VacationRepository
val featuredFeaturedCalendar: MediatorLiveData<FeaturedCalendar> = MediatorLiveData()
fun featureDays(from: String, till: String) {
val disposable = vacationRepository
.featuredCalendar(from, till, KEY, ID)
.map { featuredCalendar ->
val holidays = arrayListOf<FeaturedCalendar.Holiday>()
featuredCalendar.holidays.forEach { holidayItem ->
val holiday = FeaturedCalendar.Holiday(format.parse(holidayItem.date), holidayItem.holiday)
holidays.add(holiday)
}
FeaturedCalendar(featuredCalendar.status, holidays)
}
.subscribeOn(Schedulers.io())
.observeOn(mainThread())
.subscribe(
{
featuredFeaturedCalendar.postValue(it)
},
{
throw IllegalStateException(it)
})
disposables.add(disposable)
}}
class VacationRepository(private val apiDaysSeResource: ApiDaysSeResource) {
fun featuredCalendar(from: String, till: String, key: String, id: String): Flowable<FeaturedCalendar> {
return apiDaysSeResource.days(from, till, key, id)//.toFlowable()
}
}
public interface ApiDaysSeResource {
Flowable<FeaturedCalendar> days(@Query("fran") String fran, @Query("till") String till, @Query("key") String key, @Query("id") String id);
}
몇 가지 이유가 있습니다. 1. 원래 스레드에서'map()'이 일어나고 있습니다. 2.'observeOn()'이 정말 느린 일을하고있을 수도 있습니다. 구독을 한 후에 일회용은 실제로 'null'일 수 있습니까? 그 수 표가 필요하다고 생각하지 마십시오. – milosmns
@milosmns 나는 검사의 부분을 제거했습니다. 지도() 부분과이 코드의 featuresCeendardCalendar.postValue (it) 과 동일한 내용을 주석으로 달기를 원하면 아무런 차이가 없습니다. –
음. 좋아요, 아마도 그것은 어쩐지 느린 모델일까요? 어쩌면 당신의'onAttach()'가 느려지는 것을 할 것인가? – milosmns