Glide 问题 No puedes iniciar una carga para una actividad destruida

Uso básico:
Glide.with(context).load(imageUrl).into(imageView);


El escenario de "No puede iniciar una carga para una actividad destruida" es:
cuando un servidor de terceros solicita imágenes, la actividad se cierra durante el proceso de solicitud de red y se informará este error.

La razón es:
principalmente en el contexto, porque aunque la actividad está cerrada, después de que se ejecuta la devolución de llamada de red exitosa, se obtiene la dirección de la imagen, y cuando la imagen se carga con deslizamiento, la actividad ya está terminada ~ Mira el código fuente de deslizamiento
:

 

 Entonces se lanza una excepción aquí:

Esta excepción ocurre cuando activity.isDestroyed()~

También hay varias otras excepciones: 
no puede iniciar una carga en un fragmento antes de que se adjunte

No puede iniciar una carga en un contexto nulo

En definitiva, es porque pasamos en una Actividad destruida o un Contexto vacío, y la Actividad montada por el Fragmento está vacía.

Mirando hacia atrás en la escena utilizada, se llama a Glide después de que se ejecuta la devolución de llamada exitosa.Cuando se ejecuta el método Glide.with();, la actividad actual se ha destruido, por lo que se produce este problema.

La solucion es:

Al usar la actividad al pasar parámetros,

if(!this.isFinishing()) {
        Glide.with(this).....
}

o

if(!this.isDestroyed()) {
        Glide.with(this).....
}

Al usar el contexto como paso de parámetros,

​if(context !=null) {
        Glide.with(context).....
}

​

Al usar fragmento al pasar parámetros,

if (fragment != null && fragment.getActivity() != null) {
        Glide.with(fragment).....
}

Supongo que te gusta

Origin blog.csdn.net/NewActivity/article/details/122704527
Recomendado
Clasificación