使用Glide加载图像花费太多时间

时间:2018-09-25 12:23:34

标签: android image-processing android-glide

我正在显示来自服务器的图像列表。图像可能具有不同的尺寸和分辨率。我发现Image需要花费一些时间才能加载到Imageview中。

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

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),则Glide throwing无法加载资源异常。为了处理此类问题,我使用了转换。但是仍然没有结果。

我希望图像能快速显示。

1 个答案:

答案 0 :(得分:0)

您可以将GlideApp用于新版本的滑行。

您必须在项目中创建一个名为MyAppGlideModule的Java类。并像下面的代码一样制作类。

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'