详细说明: 我正在使用Glide从drawable更改图像。当我将方向更改为横向时,它会给我一个logcat错误,指向我用于使用Glide更改图像的方法。
代码段:
private void changeDice1(int drawable) {
Glide.with(MainActivity.this)
.load(drawable)
.crossFade()
.diskCacheStrategy(DiskCacheStrategy.SOURCE)
.into(ivDice1);
}
@Override
public void onDestroy() {
super.onDestroy();
}
Logcat错误:
答案 0 :(得分:1)
Glide
异步加载图像。因此,如果您更改设备的方向,可能会发生更改参考上下文并引发异常。因此,使用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();}
}
现在再次在onConfigurationChanged
中调用该函数。
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
changeDice1(R.drawable.your_image);
}
答案 1 :(得分:0)
您可以使用Glide.clear()
取消加载。
但是,在您的活动被销毁后尝试启动新加载时会发生该异常。在异步获取某些数据后是否开始加载图像?如果是这样,您可能希望在活动停止时取消异步提取,或者至少在提取完成并且活动被销毁时忽略结果。
有关详细信息,请参阅此问题:https://github.com/bumptech/glide/issues/975