Glide.with(Activity)
.load(String)
. into(View)
이미지 로드 할 때 발생하는 오류 You cannot start a load for a destroyed activity
Glide.with(Activity)
의 내부 로직을 보면`getRetrieve(*activity).get(activity*);` 바로 반환하는 한 줄의 코드가 있다.
public static RequestManager with(@NonNull Activity activity) {
return getRetriever(activity).get(activity);
}
getRetrieve하고 다시 get(Activity) 하는 메소드의 코드를 보면 액티비티의 상태를 확인하는 assertNotDestroyed(acticity);
코드를 볼 수 있다.
private static void assertNotDestroyed(@NonNull Activity activity) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1 && activity.isDestroyed()) {
throw new IllegalArgumentException("You cannot start a load for a destroyed activity");
}
}
assertNotDestroyed(Activity) 메소드에서 액티비티가 isFinishing
이 아닌 isDestroyed
로 액티비티의 상태를 확인하고, destory가 실행된 경우 에러 메세지를 출력하는 것을 알 수 있다.
⇒ 백그라운드 작업 후 Glide를 통해 이미지를 로딩할 경우 Acticity.isFinishing()
과 Acticity.isDestroyed()
를 같이 확인해 주는 것이 좋겠다
아니면 생명 주기를 보장할 수 있는 방법으로 사용하는 것이 좋겠다.