2014-05-23 24 views
5

Pytanie, jak połączyć wszystkie te biblioteki w jednym projekcie?OkHttp + Picasso + Retrofit

  • Ustaw jednego OkHttpClient jako warstwę tła dla Picasso i Retrofit.
  • Jak wprowadzać zmiany priorytetów, takie jak w lib. (dla stronicowania)?
+1

„Chodzi o to, w jaki sposób połączyć wszystkie te 3 biblioteki w jednym projekcie? " - pobierz trzy pliki JAR i ich zależności (np. GSON) lub odwołaj się do wszystkich trzech artefaktów w kompilacji Gradle lub Maven. "Ustaw jeden OkHttpClient jako warstwę tła dla Picassa i Retrofitu." - AFAIK, Retrofit i Picasso będą automatycznie używać OkHttp. "Jak dokonać zmian Priority, jak w libacji Volley (dla paginacji)" - proszę wyjaśnić bardziej szczegółowo, jaki jest twój problem i jak "zmiany priorytetów" mają coś wspólnego z "paginacją". – CommonsWare

+0

Podczas korzystania z modernizacji muszę ręcznie utworzyć OkClient, który pobiera obiekt OkHttpClient w konstruktorze. Ale nie wiem, czy te dwie biblioteki użyją tego samego OkHttpClient jako tła, czy nie utworzę własnego OkHttpClient dla Picassa. Co na temat stronicowania i priorytetu: Podczas przewijania listy pozycji i blisko końca strony, należy pobrać więcej pozycji, a w salwie prośba o pobranie nowych elementów ma najwyższy priorytet, gdy obrazy się wyczerpują. Więc kiedy nadejdzie czas ładowania nowych elementów do listy, będą one natychmiast pobierane. – Alex

Odpowiedz

20

W skrócie:

OkHttpClient okHttpClient = new OkHttpClient(); 
RestAdapter restAdapter = new RestAdapter.Builder().setClient(new OkClient(okHttpClient)).build(); 
OkHttpDownloader downloader = new OkHttpDownloader(okHttpClient); 
Picasso picasso = new Picasso.Builder(this).downloader(downloader).build(); 

Nie sądzę, że to możliwe, aby mieć priorytety z aktualnej wersji modernizacji.

+0

Jak używać dwóch różnych katalogów pamięci podręcznej do modernizacji i Picassa? Czy istnieje sposób inny niż użycie dwóch instancji OkHttpClient? –

6

Dla OkHttpClient 3.0 Modernizacja 2.0 to:

OkHttpClient client = new OkHttpClient.Builder() 
    .cache(cache) // optional for adding cache 
    .networkInterceptors().add(loggingInterceptor) // optional for adding an interceptor 
    .build(); 

Retrofit retrofit = new Retrofit.Builder() 
    .baseUrl("http://api.yourdomain.com/v1/") 
    .addConverterFactory(GsonConverterFactory.create()) 
    .client(client) 
    .build(); 

Picasso picasso = Picasso.Builder(context) 
    .downloader(new OkHttp3Downloader(client)) 
    .build(); 

priorytetów został przesunięty w dół model stosu klienta HTTP i jest problem badane: https://github.com/square/okhttp/issues/1361

+1

Nie zapomnij dodać 'compile 'com.jakewharton.picasso: picasso2-okhttp3-downloader: 1.0.2'' do build.gradle. – CoolMind

Powiązane problemy