Wpis z mikrobloga

Cześć mirki,
Robię aplikacje na androida w której chce pobrać wszystkie pliki wyświetlane w RecyclerView.
Chcę wykorzystać RxJave2 i Retrofita. Niestety serwer pobiera mi tylko jeden plik. Jak zrobić i czy da się wgl tak zrobić żeby wątki do pobierania plików z listy wywoływały się po kolei lub np max 5 na raz. Bo obecnie puszczam to po prostu w pętlę o tworzy tyle wątków ile jest plików do pobrania, co wydaje mi się bardzo słabe:/ Niestety nic nie mogę znaleźć w necie. Jeżeli istnieje takie rozwiązanie niekoniecznie musi być w rxjavie to bardzo prosiłbym o zarzucenie czymś.
#programowanie #pytaniedoeksperta
  • 4
@nekrofil: rozpoczęcie pobierania gdy wiesz, który rekord ma się wyświetlić (onBindViewHolder) i anulowanie pobierania gdyby się nie ukończyło a postanowiłeś przesunąć listę i nie potrzebujesz aby było kontynuowane pobieranie pliku (onDetachedFromRecyclerView albo onViewDetachedFromWindow).

Nie bardzo rozumiem z czym masz problem. Może z tym, że na tablecie mieści ci się więcej elementów niż na telefonie a chcesz pobierać maksymalnie 5 jednocześnie? https://square.github.io/okhttp/2.x/okhttp/com/squareup/okhttp/Dispatcher.html#setMaxRequestsPerHost-int-
@czlowiek-z-neptuna Nie wyciąganie listy elementów do pobrania z RecyclerView mam już, chodzi o sam proces pobierania, ponieważ serwer udostępnia mi tylko metodę do pobrania jednego pliku na raz, więc mając listę muszę ją jakoś zakolejkować żeby sie pobierał każdy po kolei. I tu mój problem bo obecnie dzieje się to tak że puszczam w zwykła pętlę i tworzy się tyle wątków pobierania co plików na liście, a to nie jest fajne. Chciałbym
@nekrofil: Ja robiłem coś podobnego tylko z uploadem, użyłem operatora delay(func) z rxjavy. Można też spróbować zrobić emitter, który rozpoczyna pobieranie, i daje sygnał przez onNext gdy plik się pobierze