Android处理方向的变化。使用滑行更改图像的应用程序崩溃点

时间:2017-01-07 11:32:07

标签: android logcat android-glide

详细说明: 我正在使用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错误:

enter image description here

2 个答案:

答案 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