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).....
}