Zgodnie z dokumentacją :
Component Dependencydaje ci dostęp tylko do powiązań uwidocznionych jako metody aprowizacji poprzez zależności komponentów, tj. masz dostęp tylko do typów zadeklarowanych jako nadrzędne Component.
SubComponentdaje ci dostęp do całego grafu wiązania od jego rodzica, kiedy jest zadeklarowany, tzn. masz dostęp do wszystkich obiektów zadeklarowanych w jego Modules.
Powiedzmy Powiedzmy, masz ApplicationComponentzawierający wszystkie Androidrzeczy związane ( LocationService, Resources, SharedPreference, etc). Chcesz również mieć miejsce, w DataComponentktórym zarządzasz rzeczami w celu trwałości, a także zajmujesz WebServicesię interfejsami API. Jedyne, czego ci brakuje, DataComponentto to, Application Contextco znajduje się w ApplicationComponent. Najprostszym sposobem na uzyskanie Contextfrom DataComponentbyłaby zależność od ApplicationComponent. Musisz być pewien, że masz Contextwyraźnie zadeklarowane w, ApplicationComponentponieważ masz dostęp tylko do zadeklarowanych rzeczy. W tym przypadku nie ma pracy ręcznej, co oznacza, że nie musisz określać Submodulesw nadrzędnym Componenti jawnie dodawać swojego modułu podrzędnego do modułu nadrzędnego, takiego jak:
MySubcomponent mySubcomponent = myComponent.plus(new ChildGraphModule("child!")); // No need!
Teraz uważają, że przypadek, w którym chcesz, aby wprowadzić WebServiceod DataComponenti LocationServiceod ApplicationComponentdo twoich Fragmentktóry wiąże się z wykorzystaniem @Submodule plusfunkcji powyżej. Fajną rzeczą jest to, że komponent, z którym się łączysz ( ApplicationComponent) nie musi ujawniać WebServiceani LocationServicedlatego, że masz od razu dostęp do całego wykresu.