bumptech / glide

An image loading and caching library for Android focused on smooth scrolling
https://bumptech.github.io/glide/
Other
34.58k stars 6.12k forks source link

NullPointerException-DecodeJob.runLoadPath #4779

Open 3HJack opened 2 years ago

3HJack commented 2 years ago

4.13.1:

okhttp3-4.9.3:

Various Android phones and Android systems.:

Glide load line / GlideModule (if any) / list Adapter code (if any):

@GlideModule
public class NBGlideModule extends AppGlideModule {

    @Override
    public void registerComponents(@NonNull Context context, @NonNull Glide glide, @NonNull Registry registry) {
        OkHttpClient client = new OkHttpClient.Builder()
                .readTimeout(5, TimeUnit.SECONDS)
                .connectTimeout(5, TimeUnit.SECONDS)
                .addInterceptor(new RecordDownloadInterceptor())
                .build();

        OkHttpUrlLoader.Factory factory = new OkHttpUrlLoader.Factory(client);
        registry.replace(GlideUrl.class, InputStream.class, factory);
    }

    @Override
    public void applyOptions(@NonNull @NotNull Context context, @NonNull @NotNull GlideBuilder builder) {
        super.applyOptions(context, builder);
        builder.setSourceExecutor(GlideExecutorUtils.createGlideExecutor(NBExecutors.IoService))
                .setDiskCacheExecutor(GlideExecutorUtils.createGlideExecutor(NBExecutors.DefaultService))
                .setAnimationExecutor(GlideExecutorUtils.createGlideExecutor(NBExecutors.DefaultService));
        if (DeviceUtil.getDeviceTier().val < DeviceUtil.DEVICE_TIER.GOOD.val) {
            //only enable RGB_565 mode with low performance device.
            builder.setDefaultRequestOptions(
                    RequestOptions.formatOf(DecodeFormat.PREFER_RGB_565)
            );
        }
    }
}

package com.bumptech.glide.load.engine.executor

import android.annotation.SuppressLint
import java.util.concurrent.ExecutorService

object GlideExecutorUtils {

    @SuppressLint("VisibleForTests")
    @JvmStatic
    fun createGlideExecutor(executorService: ExecutorService): GlideExecutor {
        return GlideExecutor(executorService)
    }
}

Stack trace / LogCat:

Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'n3.v n3.t.a(com.bumptech.glide.load.data.e, l3.i, int, int, n3.j$a)' on a null object reference
       at com.bumptech.glide.load.engine.DecodeJob.runLoadPath(DecodeJob.java:535)
       at com.bumptech.glide.load.engine.DecodeJob.decodeFromFetcher(DecodeJob.java:499)
       at com.bumptech.glide.load.engine.DecodeJob.decodeFromData(DecodeJob.java:485)
       at com.bumptech.glide.load.engine.DecodeJob.decodeFromRetrievedData(DecodeJob.java:430)
       at com.bumptech.glide.load.engine.DecodeJob.onDataFetcherReady(DecodeJob.java:394)
       at com.bumptech.glide.load.engine.SourceGenerator.cacheData(SourceGenerator.java:176)
       at com.bumptech.glide.load.engine.SourceGenerator.startNext(SourceGenerator.java:56)
       at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:311)
       at com.bumptech.glide.load.engine.DecodeJob.runWrapped(DecodeJob.java:280)
       at com.bumptech.glide.load.engine.DecodeJob.run(DecodeJob.java:235)
       at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:98)
       at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571)
       at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
       at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678)
       at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)
Er3c commented 2 years ago

nobody solve? I meet too

annhienktuit commented 1 year ago

I got the same problem