0

Détails: Je change l'image de drawable en utilisant Glide. Quand j'ai changé d'orientation en paysage, cela me donne une erreur logcat pointant vers la méthode que j'utilise pour changer mon image avec Glide.Android Manipulation de l'orientation. points d'impact de l'application sur le changement d'image en utilisant la glisse

extrait de code:

private void changeDice1(int drawable) { 
    Glide.with(MainActivity.this) 
      .load(drawable) 
      .crossFade() 
      .diskCacheStrategy(DiskCacheStrategy.SOURCE) 
      .into(ivDice1); 
} 

@Override 
public void onDestroy() { 
    super.onDestroy(); 
} 

erreur Logcat:

enter image description here

+0

Où appelez-vous cette fonction? –

+0

dans une fonction également appelée dans onCreate. –

+0

Veuillez voir la réponse ci-dessous. –

Répondre

0

Vous pouvez utiliser Glide.clear() pour annuler une charge. Toutefois, cette exception se produit lorsque vous essayez de démarrer une nouvelle charge après la destruction de votre activité. Commencez-vous à charger des images après l'extraction de certaines données de manière asynchrone? Si c'est le cas, vous voulez probablement annuler votre recherche asynchrone lorsque votre activité est arrêtée ou au moins ignorer le résultat si l'extraction se termine et que votre activité est détruite.

voir cette question pour plus d'informations: https://github.com/bumptech/glide/issues/975

1

Les charges Glide l'image de manière asynchrone. Donc, si vous changez l'orientation de votre appareil, cela peut arriver, le contexte de référence est modifié et une exception est levée. Donc, modifiez votre fonction comme ceci en utilisant un bloc try-catch.

private void changeDice1(int drawable) { 
    try{ 
     Glide.with(MainActivity.this) 
       .load(drawable) 
       .crossFade() 
       .diskCacheStrategy(DiskCacheStrategy.SOURCE) 
       .into(ivDice1); 
    } catch(Exception e) { e.printStackTrace();} 
} 

Appelez à nouveau la fonction dans onConfigurationChanged.

@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 
    changeDice1(R.drawable.your_image); 
} 
+0

Merci! @Reaz Cela fonctionne très bien. –