1

I have a question regarding building AppGlideModule. There are two libraries I would like to consume.

Library A has

@GlideModule
public class LibraryA extends LibraryGlideModule {

    @Override
    public void registerComponents(@NonNull Context context, @NonNull Glide glide, @NonNull Registry registry) {
        Implementation...
    }
}

Library B has

@GlideModule
public class LibraryB extends LibraryGlideModule {

    @Override
    public void registerComponents(@NonNull Context context, @NonNull Glide glide, @NonNull Registry registry) {
        LogUtils.info(this, "registerComponents()"); // There is not any custom components registered.
    }
}

What I did in my application

@GlideModule
public class MyAppGlideModule extends AppGlideModule {

    @Override
    public void applyOptions(@NonNull Context context, @NonNull GlideBuilder glideBuilder) {
        Implementation...
    }

    @Override
    public void registerComponents(@NonNull Context context, @NonNull Glide glide, @NonNull Registry registry) {
        super.registerComponents(context, glide, registry);
        new LibraryA().registerComponents(context, glide, registry));
        new LibraryB().registerComponents(context, glide, registry));
    }
}

Is it right to do so in my application? I'm seeing some issue at runtime. Whenever LibraryB gets called, there are some image missing issues observed. Any suggestions would be helpful. Thanks!!

Sherly
  • 91
  • 4

1 Answers1

0

You don't have to register your LibraryGlideModule implementations in your AppGlideModule implementation. That will be done automatically i.e. identified & added at compile time by Glide. You can verify it in generated GeneratedAppGlideModuleImpl class.

final class GeneratedAppGlideModuleImpl extends GeneratedAppGlideModule {
  private final MyGlideModule appGlideModule;

  public GeneratedAppGlideModuleImpl(Context context) {
    appGlideModule = new MyGlideModule();
    if (Log.isLoggable("Glide", Log.DEBUG)) {
      Log.d("Glide", "Discovered AppGlideModule from annotation: com.example.my.mobile.MyGlideModule");
      Log.d("Glide", "Discovered LibraryGlideModule from annotation: com.example.my.mobile.MyLibraryGlideModule");
    }
  }

  @Override
  public void applyOptions(@NonNull Context context, @NonNull GlideBuilder builder) {
    appGlideModule.applyOptions(context, builder);
  }

  @Override
  public void registerComponents(@NonNull Context context, @NonNull Glide glide,
      @NonNull Registry registry) {
    new MyLibraryGlideModule().registerComponents(context, glide, registry);
    appGlideModule.registerComponents(context, glide, registry);
  }

  @Override
  public boolean isManifestParsingEnabled() {
    return appGlideModule.isManifestParsingEnabled();
  }

  @Override
  @NonNull
  public Set<Class<?>> getExcludedModuleClasses() {
    return Collections.emptySet();
  }

  @Override
  @NonNull
  GeneratedRequestManagerFactory getRequestManagerFactory() {
    return new GeneratedRequestManagerFactory();
  }
}

Glide Configuration for ref

Arpit J.
  • 1,108
  • 12
  • 20