Zgodnie z dokumentacją :
Component Dependency
daje 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
.
SubComponent
daje 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 Module
s.
Powiedzmy Powiedzmy, masz ApplicationComponent
zawierający wszystkie Android
rzeczy związane ( LocationService
, Resources
, SharedPreference
, etc). Chcesz również mieć miejsce, w DataComponent
którym zarządzasz rzeczami w celu trwałości, a także zajmujesz WebService
się interfejsami API. Jedyne, czego ci brakuje, DataComponent
to to, Application Context
co znajduje się w ApplicationComponent
. Najprostszym sposobem na uzyskanie Context
from DataComponent
byłaby zależność od ApplicationComponent
. Musisz być pewien, że masz Context
wyraźnie zadeklarowane w, ApplicationComponent
ponieważ masz dostęp tylko do zadeklarowanych rzeczy. W tym przypadku nie ma pracy ręcznej, co oznacza, że nie musisz określać Submodules
w nadrzędnym Component
i 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ć WebService
od DataComponent
i LocationService
od ApplicationComponent
do twoich Fragment
który wiąże się z wykorzystaniem @Submodule
plus
funkcji powyżej. Fajną rzeczą jest to, że komponent, z którym się łączysz ( ApplicationComponent
) nie musi ujawniać WebService
ani LocationService
dlatego, że masz od razu dostęp do całego wykresu.