Daga: inyecciones anidadas, ¿es necesario llamar a inject ()?

Soy nuevo en Dagger y al principio me enfrento a algunos problemas. Tengo una estructura simple hasta ahora en mi proyecto. Mi módulo de inyección:

@Module(
    injects = {GameBoardFragment.class, GameManager.class},
    complete = false,
    library = true
)

public class GameObjectsProviderModule {
private final Application mApplication;

public GameObjectsProviderModule(Application application){
    this.mApplication = application;
}

@Provides
@Singleton
public GameManager provideGameManager(){
    return new GameManager();
}

@Provides
public Board getBoard(){
    return new Board();
}

@Provides @Singleton @ForApplication Context provideAppContext() {
    return mApplication;
}

Mi clase de aplicación personalizada simplificada se ve así:

public class MyApp extends Application {
private static ObjectGraph mApplicationGraph;

@Override public void onCreate() {
    super.onCreate();

    mApplicationGraph = ObjectGraph.create(new GameObjectsProviderModule(this));
}

public static ObjectGraph getObjectGraph(){
    return mApplicationGraph;
}
}

Y ahora, mi fragmento se ve así:

public class GameBoardFragment extends Fragment {

@Inject
GameManager mGameManager;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    MyApp.getObjectGraph().inject(this);

    View root = inflater.inflate(R.layout.fragment_game_board, container, false);
    findViews(root);
    confViews();

    return root;
}
}

Y finalmente mi clase GameManager

public class GameManager  {

    @Inject Board mBoard;

    public GameManager(){
        MyApp.getObjectGraph().inject(this);
    }
}

Andy oye, funciona! Excelente. Pero mi pregunta es por qué no funciona en caso de que comente esta línea:

MyApp.getObjectGraph().inject(this);

¿Siempre hemos llamado explícitamente a la función inject () para que todas las inyecciones necesarias tengan lugar en objetos anidados? No se ve, como muestra el ejemplo de la cafetera:

https://github.com/square/dagger/tree/master/examples/simple/src/main/java/coffee

¿Por qué tengo que llamar a inject () en la clase GameManager para que funcione?

Editar:

El enfoque de inyección consturctor funciona bien.

Pero para uso futuro intenté ejecutar la inyección de campo, y hasta ahora no he tenido éxito.

Comenté los dos métodos @Provide del módulo e hice que mi GameManager se viera así:

@Singleton
public class GameManager  {

@Inject Board mBoard;

@Inject
  public GameManager(){
}
}

y Junta:

public class Board {

  @Inject
  public Board() {
  }
}

Sin embargo, mBoard no se instancia. Intentaré más y supongo que encontraré la solución adecuada.

Respuestas a la pregunta(2)

Su respuesta a la pregunta