【问题标题】:OkHttp + Picasso + RetrofitOkHttp + Picasso + 改造
【发布时间】:2014-07-12 23:25:36
【问题描述】:

问题是如何将所有这些 3 库组合到一个项目中?

  • 制作一个 OkHttpClient 作为 Picasso 和 Retrofit 的背景层。
  • 如何在 Volley lib 中进行优先级更改。 (用于分页)?

【问题讨论】:

  • "问题是如何将这 3 个库合并到一个项目中?" -- 下载三个 JAR 及其依赖项(例如 GSON),或在您的 Gradle 或 Maven 构建中引用所有三个工件。 “让一个 OkHttpClient 成为 Picasso 和 Retrofit 的背景层。” -- AFAIK、Retrofit 和 Picasso 将自动使用 OkHttp。 “如何在 Volley lib 中进行优先级更改。(用于分页)”——请更详细地解释您的问题是什么,以及“优先级更改”与“分页”有何关系。
  • 当使用改造时,我必须手动创建一个 OkClient,它在构造函数中需要一个 OkHttpClient。但是我不知道这两个库是否会使用相同的 OkHttpClient 作为背景,是否我不为 Picasso 创建自己的 OkHttpClient。分页和优先级如何:当您滚动项目列表并接近页面末尾时,应该下载更多项目,并且当图像变低时,下载新项目的请求具有最高优先级。因此,当需要将新项目加载到列表中时,它们将立即下载

标签: android retrofit picasso okhttp


【解决方案1】:

简而言之:

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();

我认为当前版本的 Retrofit 不可能有优先级。

【讨论】:

  • 如何使用两个不同的缓存目录进行改造和毕加索?除了使用两个 OkHttpClient 实例之外,还有其他方法吗?
【解决方案2】:

对于 OkHttpClient 3.0 和 Retrofit 2.0 它是:

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();

优先级已经从栈模型下移到http客户端,有一个问题正在研究中:https://github.com/square/okhttp/issues/1361

【讨论】:

  • 别忘了在 build.gradle 中添加 compile 'com.jakewharton.picasso:picasso2-okhttp3-downloader:1.0.2'
猜你喜欢
  • 2016-01-25
  • 2015-12-28
  • 2014-03-02
  • 1970-01-01
  • 2015-05-12
  • 2014-06-13
  • 2015-06-18
  • 2016-01-28
  • 2014-09-23
相关资源
最近更新 更多