Injeções aninhadas por punhal, é necessário chamar inject ()?

Sou novo em Dagger e, no começo, enfrento alguns problemas. Até agora, tenho uma estrutura simples no meu projeto. Meu módulo de injeção:

@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;
}

Minha classe de aplicativo personalizado simplificado é assim:

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;
}
}

E agora, meu fragmento fica assim:

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;
}
}

E finalmente minha classe GameManager

public class GameManager  {

    @Inject Board mBoard;

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

Andy hey, funciona! Ótimo. Mas minha pergunta é por que não funciona caso eu comente esta linha:

MyApp.getObjectGraph().inject(this);

Sempre chamamos explicitamente a função inject () para que todas as injeções necessárias ocorram em objetos aninhados? Parece que não, como mostra o exemplo do fabricante de café:

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

Por que, então, tenho que chamar inject () na classe GameManager para fazê-lo funcionar?

Editar:

A abordagem de injeção do consturctor funciona muito bem.

Mas, para uso futuro, tentei executar a injeção em campo e até agora não consegui.

Comentei os dois métodos @Provide do módulo e fiz meu GameManager ficar assim:

@Singleton
public class GameManager  {

@Inject Board mBoard;

@Inject
  public GameManager(){
}
}

e Conselho:

public class Board {

  @Inject
  public Board() {
  }
}

No entanto, o mBoard não é instanciado. Vou tentar mais e suponho que descubra a solução adequada.

questionAnswers(2)

yourAnswerToTheQuestion