代码之家  ›  专栏  ›  技术社区  ›  Rohan Patel

使用Glide加载图像耗时太长

  •  1
  • Rohan Patel  · 技术社区  · 6 年前

    即使在良好的互联网网络中,也需要花费大量的时间。

    if (imageView != null && imageUri != null) {
            RequestOptions options = new RequestOptions();
            options.error(R.drawable.ic_payment_failed);
            options.format(DecodeFormat.PREFER_RGB_565);
            options.override(500, 500);
    
            imageView.setImageUri(imageUri);
            Glide.with(context).asBitmap()
                    .apply(options)
                    .load(imageUri)
                    .into(imageView.getProfilePic());
        }
    }
    

    我试过很多滑翔方法来提高装载速度,但都没有结果。

    如果尝试加载大图像,即4-5 MB,则滑动抛出无法加载资源异常。为了处理这类问题,我使用了转换。但还是没有结果。

    1 回复  |  直到 6 年前
        1
  •  0
  •   Ali shatergholi    6 年前

    你可以使用新版本的GlideApp。

    必须使用此名称创建java类 MyAppGlideModule 在你的项目中。把类变成下面的代码。

    import com.bumptech.glide.annotation.GlideModule;
    import com.bumptech.glide.module.AppGlideModule;
    
    @GlideModule
    public final class MyAppGlideModule extends AppGlideModule { 
    }
    

    你也可以使用 OKHttp 对于 glide 加上这种依赖 Gradle .

        implementation "com.github.bumptech.glide:okhttp3-integration:4.8.0"
    

    取代那个班

    import com.bumptech.glide.annotation.GlideModule;
    import com.bumptech.glide.module.AppGlideModule;
    
    @GlideModule
    public final class MyAppGlideModule 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);
        }
    }
    

    之后 Build GlideApp 相反 Glide

    GlideApp.with(context)
         .load(myUrl)
         .placeholder(placeholder)
         .into(yourTarget);
    

    你可以使用最新版本的glide。

    implementation 'com.github.bumptech.glide:glide:4.8.0'
    annotationProcessor 'com.github.bumptech.glide:compiler:4.8.0'