Upload
concrete
View
301
Download
0
Embed Size (px)
Citation preview
@marcellogalhardo
@marcellogalhardo
@MarcelloGalhard
/marcellogalhardo
Android Dev BRslack.androiddevbr.org
public class Activity extends AppCompatActivity { private Presenter presenter;
@Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); presenter = new Presenter(); }}
public class Presenter { private Repository repository;
public Presenter() { repository = new Repository(); }}
Activity.java / Presenter.java
public class Activity extends AppCompatActivity { private Presenter presenter;
@Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); presenter = new Presenter(); }}
public class Presenter { private Repository repository;
public Presenter() { repository = new Repository(); }}
Activity.java / Presenter.java
public class Activity extends AppCompatActivity { private Presenter presenter;
@Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); Api api = new Api(); Cache cache = new Cache(); Repository repository = new Repository(api, cache); presenter = new Presenter(repository); }}
Activity.java
public class Activity extends AppCompatActivity { private Presenter presenter;
@Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); Api api = new Api(); Cache cache = new Cache(); Repository repository = new Repository(api, cache); presenter = new Presenter(repository); }}
Activity.java
Dagger 2
● No Reflection;
● Code generated at build time;
● Easy to debug;
● Easy to maintain the dependency graph.
app/build.gradle
dependencies { annotationProcessor "com.google.dagger:dagger-compiler:2.8" compile "com.google.dagger:dagger:2.8" provided "org.glassfish:javax.annotation:2.8"}
@Singleton@Component(modules = { MainModule.class, ...})public interface MainComponent { void inject(Activity activity);}
MainComponent.java
@Singleton@Component(modules = { MainModule.class, ...})public interface MainComponent { void inject(Activity activity);}
MainComponent.java
@Singleton@Component(modules = { MainModule.class, ...})public interface MainComponent { void inject(Activity activity);}
MainComponent.java
@Singleton@Component(modules = { MainModule.class, ...})public interface MainComponent { void inject(Activity activity);}
MainComponent.java
@Singleton@Component(modules = { MainModule.class, ...})public interface MainComponent { void inject(Activity activity);}
MainComponent.java
@Singleton@Component(modules = { MainModule.class, ...})public interface MainComponent { void inject(Activity activity);}
MainComponent.java
MainModule.java
@Module public class MainModule { private static final int CACHE_SIZE_10_MB = 10 * 1024 * 1024; private static final int TIMEOUT = 20; @Provides public Presenter providesPresenter(Repository repository) { return new Presenter(repository); } @Provides @Reusable public Repository repository(Cache cache, Api api) { return new Repository(cache, api); } @Provides @Singleton public Cache providesCache() { return new Cache(CACHE_SIZE_10_MB); }
@Provides @Reusable public Api providesApi() { return new Api(TIMEOUT); }}
MainModule.java
@Module public class MainModule { private static final int CACHE_SIZE_10_MB = 10 * 1024 * 1024; private static final int TIMEOUT = 20; @Provides public Presenter providesPresenter(Repository repository) { return new Presenter(repository); } @Provides @Reusable public Repository repository(Cache cache, Api api) { return new Repository(cache, api); } @Provides @Singleton public Cache providesCache() { return new Cache(CACHE_SIZE_10_MB); }
@Provides @Reusable public Api providesApi() { return new Api(TIMEOUT); }}
MainModule.java
@Module public class MainModule { private static final int CACHE_SIZE_10_MB = 10 * 1024 * 1024; private static final int TIMEOUT = 20; @Provides public Presenter providesPresenter(Repository repository) { return new Presenter(repository); } @Provides @Reusable public Repository repository(Cache cache, Api api) { return new Repository(cache, api); } @Provides @Singleton public Cache providesCache() { return new Cache(CACHE_SIZE_10_MB); }
@Provides @Reusable public Api providesApi() { return new Api(TIMEOUT); }}
MainModule.java
@Module public class MainModule { private static final int CACHE_SIZE_10_MB = 10 * 1024 * 1024; private static final int TIMEOUT = 20; @Provides public Presenter providesPresenter(Repository repository) { return new Presenter(repository); } @Provides @Reusable public Repository repository(Cache cache, Api api) { return new Repository(cache, api); } @Provides @Singleton public Cache providesCache() { return new Cache(CACHE_SIZE_10_MB); }
@Provides @Reusable public Api providesApi() { return new Api(TIMEOUT); }}
MainModule.java
@Module public class MainModule { private static final int CACHE_SIZE_10_MB = 10 * 1024 * 1024; private static final int TIMEOUT = 20; @Provides public Presenter providesPresenter(Repository repository) { return new Presenter(repository); } @Provides @Reusable public Repository repository(Cache cache, Api api) { return new Repository(cache, api); } @Provides @Singleton public Cache providesCache() { return new Cache(CACHE_SIZE_10_MB); }
@Provides @Reusable public Api providesApi() { return new Api(TIMEOUT); }}
MainModule.java
@Module public class MainModule { private static final int CACHE_SIZE_10_MB = 10 * 1024 * 1024; private static final int TIMEOUT = 20; @Provides public Presenter providesPresenter(Repository repository) { return new Presenter(repository); } @Provides @Reusable public Repository repository(Cache cache, Api api) { return new Repository(cache, api); } @Provides @Singleton public Cache providesCache() { return new Cache(CACHE_SIZE_10_MB); }
@Provides @Reusable public Api providesApi() { return new Api(TIMEOUT); }}
MainModule.java
@Module public class MainModule { private static final int CACHE_SIZE_10_MB = 10 * 1024 * 1024; private static final int TIMEOUT = 20; @Provides public Presenter providesPresenter(Repository repository) { return new Presenter(repository); } @Provides @Reusable public Repository repository(Cache cache, Api api) { return new Repository(cache, api); } @Provides @Singleton public Cache providesCache() { return new Cache(CACHE_SIZE_10_MB); }
@Provides @Reusable public Api providesApi() { return new Api(TIMEOUT); }}
MainModule.java
@Module public class MainModule { private static final int CACHE_SIZE_10_MB = 10 * 1024 * 1024; private static final int TIMEOUT = 20; @Provides public Presenter providesPresenter(Repository repository) { return new Presenter(repository); } @Provides @Reusable public Repository repository(Cache cache, Api api) { return new Repository(cache, api); } @Provides @Singleton public Cache providesCache() { return new Cache(CACHE_SIZE_10_MB); }
@Provides @Reusable public Api providesApi() { return new Api(TIMEOUT); }}
MainModule.java
@Module public class MainModule { private static final int CACHE_SIZE_10_MB = 10 * 1024 * 1024; private static final int TIMEOUT = 20; @Provides public Presenter providesPresenter(Repository repository) { return new Presenter(repository); } @Provides @Reusable public Repository repository(Cache cache, Api api) { return new Repository(cache, api); } @Provides @Singleton public Cache providesCache() { return new Cache(CACHE_SIZE_10_MB); }
@Provides @Reusable public Api providesApi() { return new Api(TIMEOUT); }}
MainApplication.java
public class MainApplication extends Application { private MainComponent component;
@Override public void onCreate() { super.onCreate(); component = DaggerMainComponent.builder().build(); }
public MainComponent getComponent() { return component; }}
MainApplication.java
public class MainApplication extends Application { private MainComponent component;
@Override public void onCreate() { super.onCreate(); component = DaggerMainComponent.builder().build(); }
public MainComponent getComponent() { return component; }}
MainApplication.java
public class MainApplication extends Application { private MainComponent component;
@Override public void onCreate() { super.onCreate(); component = DaggerMainComponent.builder().build(); }
public MainComponent getComponent() { return component; }}
MainApplication.java
public class MainApplication extends Application { private MainComponent component;
@Override public void onCreate() { super.onCreate(); component = DaggerMainComponent.builder().build(); }
public MainComponent getComponent() { return component; }}
Activity.java
public class Activity extends AppCompatActivity { @Inject Presenter presenter;
@Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); MainApplication application = getMainApplication(); MainComponent component = application.getComponent(); component.inject(this); }}
Activity.java
public class Activity extends AppCompatActivity { @Inject Presenter presenter;
@Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); MainApplication application = getMainApplication(); MainComponent component = application.getComponent(); component.inject(this); }}
Activity.java
public class Activity extends AppCompatActivity { @Inject Presenter presenter;
@Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); MainApplication application = getMainApplication(); MainComponent component = application.getComponent(); component.inject(this); }}
Activity.java
public class Activity extends AppCompatActivity { @Inject Presenter presenter;
@Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); MainApplication application = getMainApplication(); MainComponent component = application.getComponent(); component.inject(this); }}
www.concretesolutions.com.br
Rio de Janeiro – Rua São José, 90 – cj. 2121Centro – (21) 2240-2030
São Paulo - Av. Nações Unidas, 11.541 3º andar - Brooklin - (11) 4119-0449
We help companies create successful digital products