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

Android Handling changing of orientation. app crash points on changing image using glide

详情: 我正在使用 Glide 从可绘制对象更改图像。当我将方向更改为横向时,它给我一个 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 错误:

您可以使用 Glide.clear() 取消加载。

但是,当您在 activity 被销毁后尝试开始新的加载时,会发生该异常。您是否在异步获取一些数据后开始加载图像?如果是这样,您可能想在 activity 停止时取消异步获取,或者至少在获取完成并且您的 activity 被销毁时忽略结果。

查看此问题了解更多信息:https://github.com/bumptech/glide/issues/975

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