Glide异步加载的错误
我们用Glide的时候
发现这么一个错误
加载数据的时候退出应用,
就报了这个错误
java.lang.IllegalArgumentException:You cannot start a load for a destroyed activity
你不能在一个被销毁的activity
开启一个load
我们现在只有一个MainActivity,
也就是我们销毁这个MainActivity的时候发生的错误
这是为什么呢
我们点击到报错的代码上看看
Glide.with(getContext()).load(mImages.get(position)).into(imageView);
我们是用Glide加载图片放到一个ImageView里面
就这么简单
为什么会报错呢
原因
我们用Glide去加载图片
Glide是异步加载的
所以是开启了子线程去加载图片的
子线程是不会随着我们关闭应用或者退出主线程而关闭的
所以当我们退出应用的时候
也就销毁了MainActivity
这时候Glide已经开启了子线程去加载图片
当要获取context的时候
发现Activity已经被销毁了
所以就会报错了
解决方案
我们用一个全局的context替换掉getContext()
Glide.with(getContext().getApplicationContext()).load(mImages.get(position)).into(imageView);