Glideロードの進捗

2502 ワード

glideのロードの進捗状況を記録します.
在build.gradleに依存を追加
implementation 'com.github.bumptech.glide:glide:4.7.1'
annotationProcessor 'com.github.bumptech.glide:compiler:4.7.1'
implementation "com.github.bumptech.glide:okhttp3-integration:4.7.1"

okhttp 3-integrationでは、glideのロードの最下位層としてokhttpを使用することができます.
この時私たちは交換するだけでいいです.
//       glide        module
@com.bumptech.glide.annotation.GlideModule
public class MyGlideModule extends AppGlideModule {
    @Override
    public void registerComponents(@NonNull Context context, @NonNull Glide glide, @NonNull Registry registry) {
        //      okhttp
        OkHttpClient.Builder builder = new OkHttpClient.Builder();
        //      okhttp    ,         
        builder.addInterceptor(new ProgressInterceptor());
        OkHttpClient okHttpClient = builder.build();
        // glide urlConnection   okhttp
        registry.replace(GlideUrl.class, InputStream.class, new OkHttpUrlLoader.Factory(okHttpClient));
}

あとは郭霖さんのブログから始めればいいのに
実はt 3以上のものはokhttp 3-integrationのものです
注意点ロードする時必ずdiskCacheStrategy(DiskCacheStrategy.NONE)をsdカードのキャッシュをスキップして、さもなくば彼はsdカードを歩いて、ネット上から直接ダウンロードすることはできません
また監視する場所
        //      url
         ProgressInterceptor.addListener(mImgurl, new ProgressListener() {
            @Override
            public void onProgress(int progress) {
                Log.e("download",progress+"");
            }
        });
        
        //    
        Glide.with(ImagDetailActivity.this).load(mImgurl).listener(new RequestListener() {
            @Override
            public boolean onLoadFailed(@Nullable GlideException e, Object model, Target target, boolean isFirstResource) {
            //         
                ProgressInterceptor.removeListener(mImgurl);
                return false;
            }

            @Override
            public boolean onResourceReady(Drawable resource, Object model, Target target, DataSource dataSource, boolean isFirstResource) {
            //       
                Log.e("download     ",isFirstResource+"---"+model+"----"+dataSource);
                ProgressInterceptor.removeListener(mImgurl);
                return false;
            }
        }).into(mIvImagDetail);