bumptech/glide · error · IllegalStateException
Cannot register already registered manager
Error message
Cannot register already registered manager
What it means
Thrown by Glide.registerRequestManager() when the given RequestManager is already in the internal managers set. Glide prevents the same RequestManager instance from being registered twice to avoid duplicate lifecycle tracking.
Solutions
- Track whether you have already registered a RequestManager for a given lifecycle owner before registering again.
- Prefer Glide.with(context/fragment/activity) which manages registration internally, rather than manual registration.
- Ensure unregister is paired with register so re-registration after a proper teardown is valid.
- Avoid sharing a single RequestManager across multiple lifecycle owners.
Example fix
// before
if (!registered) { glide.registerRequestManager(manager); registered = true }
// but elsewhere the same manager registered again -> throws
// after
if (!managers.contains(manager)) {
glide.registerRequestManager(manager)
} Defensive patterns
Strategy: validation
Validate before calling
// Guard registration against duplicates.
fun registerOnce(glide: Glide, manager: RequestManager) {
// Glide.registerRequestManager is package-private; mirror the guard in your own tracking.
if (!registered.contains(manager)) {
glide.registerRequestManager(manager)
registered.add(manager)
}
} Prevention
- Prefer Glide.with(...) which manages registration lifecycle internally.
- Track registration state to avoid duplicate register calls.
- Keep register/unregister balanced around lifecycle events.
When it happens
Trigger: registerRequestManager(requestManager) is called and managers.contains(requestManager) is true (duplicate registration).
Common situations: Calling Glide.with(...).register-style APIs twice; a fragment/activity lifecycle hook that re-registers the same RequestManager; integrating a third-party library that also creates/registers RequestManagers; double onResume/attach callbacks registering the same instance.
Related errors
- Cannot unregister not yet registered manager
- Failed to find image header parser.
- Failed to find result encoder for resource class
- Failed to find source encoder for data class
- GeneratedAppGlideModuleImpl is implemented incorrectly. If…
AI-assisted analysis of bumptech/glide@eb14a895d8 (2026-08-14).
Data as JSON: /api/errors/5fb028b5e32b4c12.
Report an issue: GitHub.
Appendix: source
Thrown at library/src/main/java/com/bumptech/glide/Glide.java:682
return glideContext.getRegistry();
}
boolean removeFromManagers(@NonNull Target<?> target) {
synchronized (managers) {
for (RequestManager requestManager : managers) {
if (requestManager.untrack(target)) {
return true;
}
}
}
return false;
}
void registerRequestManager(RequestManager requestManager) {
synchronized (managers) {
if (managers.contains(requestManager)) {
throw new IllegalStateException("Cannot register already registered manager");
}
managers.add(requestManager);
}
}
void unregisterRequestManager(RequestManager requestManager) {
synchronized (managers) {
if (!managers.contains(requestManager)) {
throw new IllegalStateException("Cannot unregister not yet registered manager");
}
managers.remove(requestManager);
}
}
@Override
public void onTrimMemory(int level) {
trimMemory(level);
// when level is higher than TRIM_MEMORY_UI_HIDDEN, it indicates that the app isView on GitHub (pinned to eb14a895d8)