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);
}
详情: 我正在使用 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);
}