如何设置OkHttpClient进行滑行

时间:2016-05-13 10:47:41

标签: android android-glide

我正在使用Glide加载图片,我面临的问题是,当我在慢速互联网连接上运行app时,我得到了SocketTimeOutException。所以为了解决这个问题,我想使用自定义OkHttpClient,以便我可以更改HttpClient的超时,这是我的代码。

public class MyGlideModule  implements GlideModule {
    @Override
    public void applyOptions(Context context, GlideBuilder builder) {

    }

    @Override
    public void registerComponents(Context context, Glide glide) {
        OkHttpClient client = new OkHttpClient();
        client.setConnectTimeout(15, TimeUnit.SECONDS);
        client.setReadTimeout(15,TimeUnit.SECONDS);
        OkHttpUrlLoader.Factory factory = new OkHttpUrlLoader.Factory(client);
        glide.register(GlideUrl.class, InputStream.class, factory);
    }
}

但Glide API中不再有OkHttpUrlLoader。所以我想知道如何设置OkHttpClient for Glide

4 个答案:

答案 0 :(得分:26)

因为滑行4.0.0它已经改变了一点。

首先,不推荐使用GlideModule,如果您正在开发应用程序并且AppGlideModule用于库开发,则需要使用LibraryGlideModule。您需要在自定义@GlideModule类之上使用AppGlideModule

其次,register()对象中没有Glide方法。

最后okhttp3将使用构建器。

对于应用来说,它就像下面一样:

    @GlideModule
    private class CustomGlideModule extends AppGlideModule {

       @Override
       public void registerComponents(Context context, Glide glide, Registry registry) {
           OkHttpClient client = new OkHttpClient.Builder()
                   .readTimeout(15, TimeUnit.SECONDS)
                   .connectTimeout(15, TimeUnit.SECONDS)
                   .build();

       OkHttpUrlLoader.Factory factory = new OkHttpUrlLoader.Factory(client);

           glide.getRegistry().replace(GlideUrl.class, InputStream.class, factory);
       }
   }

您需要将所有这些依赖项与应用程序gradle文件中的确切版本相关联:

 compile "com.squareup.okhttp3:okhttp:3.8.1"
    compile 'com.github.bumptech.glide:glide:4.0.0'
    compile ('com.github.bumptech.glide:okhttp3-integration:4.0.0'){
        exclude group: 'glide-parent'
    }

答案 1 :(得分:15)

要使用OkHttpUrlLoader,您需要像@darwin所说的那样添加依赖项,但存在依赖性问题https://github.com/bumptech/glide/issues/941。所以你将在依赖项中添加它

 compile ('com.github.bumptech.glide:okhttp3-integration:1.4.0'){
        exclude group: 'glide-parent'
    }

答案 2 :(得分:2)

您需要将okhttp3-integration依赖项添加到您的app gradile文件

dependencies {
compile 'com.github.bumptech.glide:okhttp3-integration:1.4.0@aar'
//compile 'com.squareup.okhttp3:okhttp:3.2.0'}

提供官方链接glide integration module

之后你可以用okhttp添加GlideModule ......

答案 3 :(得分:0)

添加或升级okhttp3-integration:4.4.0版本

implementation ('com.github.bumptech.glide:okhttp3-integration:4.4.0'){
        exclude group: 'glide-parent'
    }