Загрузка изображения с использованием Glide занимает слишком много времени - PullRequest
0 голосов
/ 25 сентября 2018

Я показываю список изображений с сервера.Изображения могут иметь разный размер и разрешение.Я заметил, что 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 МБ, Glide throwing Невозможно загрузить исключение ресурса.Чтобы справиться с этим типом проблемы, я использовал преобразование.Но все равно ничего не получается.

Я хочу, чтобы изображение отображалось быстро.

1 Ответ

0 голосов
/ 25 сентября 2018

вы можете использовать GlideApp для новой версии glide.

вы должны создать 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'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...