support guide google dependency compiler avion annotationprocessor java dagger dagger-2

java - guide - Deshacerse de la advertencia Daga 2 "Generando un inyector de miembros"



dagger user guide (2)

A partir de la Daga 2.9, estas advertencias están desactivadas por defecto.

Dadas las siguientes clases

abstract class AbstractClass { @Inject SomeDependency someDependency; } class SomeClass extends AbstractClass { @Inject AnotherDependency anotherDepenency; public void onCreate() { component = // Get component instance somehow component.inject(this); } }

en Dagger 2 al inyectar dependencias en una clase que se extiende desde una clase base abstracta que también contiene dependencias, Dagger muestra una advertencia del tipo Generating a MembersInjector for AbstractClass. Prefer to run the dagger processor over that class instead. Generating a MembersInjector for AbstractClass. Prefer to run the dagger processor over that class instead. durante la compilación.

Sin embargo, si onCreate() / implemento onCreate() en AbstractClass y llamo a la inyección de dependencia allí también, la dependencia de someDependency dependencia se inyectará dos veces, lo que podría conducir a un comportamiento inesperado. Una vez en onCreate() de AbstractClass y una vez en onCreate() de SomeClass .

¿Cuál es la mejor solución para deshacerse de esta advertencia mientras se evita la inyección duplicada de dependencias?


La solución podría ser: definir onCreate () solo en clase abstracta