У меня есть список объектов, которые пользователь может создавать и удалять во время выполнения, и каждому объекту присваивается значок. Когда в какой-то момент я выполняю несколько операций добавления / удаления этих объектов, я получаю следующее исключение.
java.lang.IllegalStateException: Cannot recycle a resource that has already been recycled
at com.bumptech.glide.load.engine.EngineResource.recycle(EngineResource.java:71)
at com.bumptech.glide.load.engine.ResourceRecycler$ResourceRecyclerCallback.handleMessage(ResourceRecycler.java:37)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:135)
Я не выполняю операций по утилизации самостоятельно и не обращаюсь к пулу растровых изображений Glide. Моя пользовательская модель Glide - это следующий класс
public class MyGlideInput {
private String packageName, apkFilePath, iconResName;
public MyGlideInput() {
}
@Override
public boolean equals(@Nullable Object obj) {
if(obj == null){
return false;
}
if(!(obj instanceof MyGlideInput)){
return false;
}
MyGlideInput input = (MyGlideInput) obj;
return stringsEqual(packageName, input.packageName ) && stringsEqual(apkFilePath, input.apkFilePath)
&& stringsEqual(iconResName, input.iconResName);
}
@Override
public int hashCode() {
return (apkFilePath+packageName+iconResName+"").hashCode();
}
public boolean stringsEqual(String a, String b){
return a != null && a.equals(b);
}
}
для класса адаптера RecyclerView в bindViewHolder. Я делаю:
GlideInput glideInput = new GlideInput().setDrawableResName(iconResName);
GlideApp.with(img).load(glideInput).dontAnimate().error(R.drawable.warning).into(img);
Есть предложения?