Glide You cannot start a load for a destroyed activity

1,611 阅读1分钟

前段时间做项目的时候第一次发现这个错误。字面上是说:不能为一个已经销毁的activity加载。 一开始很难复现不知道怎么回事。然后去google github上找。发现很多人提过。但都没有一个比较好的解决方法。后来在一个回答中看到了这个的原因:因为使用的RecyclerView在加载的时候会有惯性运动。在关闭页面后依然会滑动。这时再调用Glide.with(actiivity)时activity已经走了onDestory方法所以就会报这样的错误。解决的方法有各种:

  • 在退出时强制不让RecyclerView再运动swipeTarget.dispatchTouchEvent(MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), MotionEvent.ACTION_CANCEL, 0F, 0F, 0))(推荐)
  • 判断当前activity是否销毁activity.isFinishing
  • try catch有人会使用这种方法吗。。。。