A sample Android application to demonstrate how to build screens as fully independent modules.
It relies on a Finite State Machine (EasyFlow), to handle screens as states and trigger/consume events. Events allow the application to handle navigation between screens. The global context of the FSM is used to pass arguments as a Bundle. It also shows how to use dependency injection (via Dagger 2 for example) in modules.
This way:
modules are fully independent
modules declare the dependencies they need
modules declare the states they correspond to
modules declare the events that can be triggered
the hosting application sets up the states it uses (i.e., "screens")
the hosting application sets up how to navigation between states (with events)
the hosting application sets up the dependency injection mechanism