美文网首页
Glide 图片加载连接超时

Glide 图片加载连接超时

作者: 一个冬季 | 来源:发表于2019-09-30 12:18 被阅读0次
    参考文章

    Glide 4.x添加自定义组件原理
    Glide 系列-1:预热、Glide 的常用配置方式及其原理
    Glide 4.0 详解

    问题描述

    在加载图片的时候,经常会出现连接超时的现象发生,导致无法加载出图片

    Glide 3.5.2、okhttp3 版本

    com.github.bumptech.glide:glide:3.5.2
    com.squareup.okhttp3:okhttp:3.5.0

    解决办法
    implementation 'com.github.bumptech.glide:okhttp3-integration:1.5.0'
    
    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.Builder()
                    .readTimeout(30, TimeUnit.SECONDS)
                    .writeTimeout(30, TimeUnit.SECONDS)
                    .connectTimeout(30, TimeUnit.SECONDS)
                    .build();
            OkHttpUrlLoader.Factory factory = new OkHttpUrlLoader.Factory(client);
            //注册使用Okhttp发起网络访问
            glide.register(GlideUrl.class, InputStream.class, factory);
        }
    }
    
     <application
          ...>
           <meta-data
                android:name="com.xxxxxx.MyGlideModule"
                android:value="GlideModule" />
    </applicaton>
    
    Glide 4.9.0、okhttp3 版本

    implementation 'com.squareup.okhttp3:okhttp:4.0.1'
    implementation 'com.github.bumptech.glide:glide:4.9.0'
    implementation 'com.github.bumptech.glide:annotations:4.9.0'
    annotationProcessor 'com.github.bumptech.glide:compiler:4.9.0'
    implementation 'com.github.bumptech.glide:okhttp3-integration:4.9.0'
    特别说明:glide:compiler 需要在主model里面,否则会扫描不到注解

    @GlideModule
    public class FlickrGlideModule extends AppGlideModule {
        @Override
        public void applyOptions( Context context, GlideBuilder builder) {
            super.applyOptions(context, builder);
        }
    
        @Override
        public void registerComponents(Context context, Glide glide,Registry registry) {
            OkHttpClient okHttpClient = new OkHttpClient.Builder()
                    .connectTimeout(30, TimeUnit.SECONDS)
                    .writeTimeout(30, TimeUnit.SECONDS)
                    .readTimeout(30, TimeUnit.SECONDS)
                    .build();
            registry.replace(GlideUrl.class, InputStream.class, new OkHttpUrlLoader.Factory(okHttpClient));
        }
    
        // 关闭扫描清单文件
        @Override
        public boolean isManifestParsingEnabled() {
            return false;
        }
    }
    
    

    防止混淆

    -keep public class * implements com.bumptech.glide.module.GlideModule
    -keep public class * extends com.bumptech.glide.module.AppGlideModule
    -keep public enum com.bumptech.glide.load.ImageHeaderParser$** {
      **[] $VALUES;
      public *;
    }
    -keep public class  extends com.bumptech.glide.module.AppGlideModule
    -keep class com.bumptech.glide.GeneratedAppGlideModuleImpl
    

    一个项目里面只能有一个AppGlideModule,或者很多的LibraryGlideModule

    相关文章

      网友评论

          本文标题:Glide 图片加载连接超时

          本文链接:https://www.haomeiwen.com/subject/bticpctx.html