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

问题描述 投票:1回答:2

细节:我正在使用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

android logcat android-glide
2个回答
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);
}

0
投票

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

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

有关更多信息,请参阅此问题:https://github.com/bumptech/glide/issues/975

© www.soinside.com 2019 - 2024. All rights reserved.