2014-04-23 14 views
13

Mam aplikację na Androida, która obecnie korzysta z biblioteki Volley, aby wysyłać żądania sieciowe i wyświetlać pobrane obrazy za pomocą NetworkImageView.Równoległe żądania HTTP z Retrofitem

Chciałbym przetestować możliwości Retrofit i ponieważ muszę uruchomić wiele wniosków (tysięcy) jestem nieco zaniepokojony równoległego wykonania. Volley obsługuje żądania równoległe z RequestQueue, które ograniczają jednocześnie uruchomione żądania do czterech, podczas gdy inne żądania są kolejkowane, czekając na wykonanie. W dokumentacji Retrofit nie znalazłem sposobu na obsłużenie liczby jednoczesnych żądań i podejrzewam, że takie szczegóły pozostawia się programistom w tej bibliotece.

Czy to prawda? Jeśli tak, czy jest dostępna biblioteka/biblioteka z Androidem? W przeciwnym razie, jakie są najlepsze praktyki dotyczące obsługi równoległych żądań?

Odpowiedz

36

Retrofit używa Executor dla żądań kolejkowania.

Domyślnie używa się Executors.newCachedThreadPool, która pozwala na nieograniczoną liczbę wątków. To pasuje do większości przypadków użycia, ponieważ normalnie miałbyś tylko jedną lub dwie prośby zdarzające się od razu.

Możesz zmienić to zachowanie, dostarczając własne podczas budowania RestAdapter. Zadzwoń pod setExecutors i przeprowadź test w executorze, który używa ograniczonej puli wątków (ograniczonej do dowolnej liczby). Aby uzyskać drugi argument, wystarczy przekazać nową instancję o numerze MainThreadExecutor, aby wywołania zwrotne były wykonywane w głównym wątku.

+0

Sugerujesz użycie "ThreadPoolExecutor" do obsługi moich wątków? Jeśli tak, użyłem tego przed migracją do 'Volley', ale miałem dwa główne problemy: 1) Zgubiłem niektóre żądania, ponieważ kolejka była pełna, Volley ma nieograniczoną kolejkę. 2) Niektóre żądania zostały usunięte z kolejki, ponieważ czekały zbyt długo. – Vektor88

+3

Tak. Używanie nieograniczonej kolejki rozwiąże zarówno 1, jak i 2. Istnieje kilka opcji 'java.util.concurrent' do wyboru. –

+0

Dzięki za wskazówki, to zdecydowanie działa. – Vektor88

Powiązane problemy