Upload
ramesh-akula
View
251
Download
0
Embed Size (px)
Citation preview
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.squareup.dagger:dagger:1.2.+' provided 'com.squareup.dagger:dagger-compiler:1.2.+'
}
Gradle Dependencies
❖ @Module : Identify this class as a Dagger module.
❖ @Inject : Classes where this module is going to inject any of
its dependencies. Specify those classes that are directly
injected into object graph.
❖ @Provides: Identify method as an injection provider. The name
of the method doesn’t matter, it only relies on what class type
is provided.
Introduction
@Module( complete = false, library = true)public class DemoModule {
//Provide log object @Provides @Singleton public Log provideLog() { return new LogImpl(); } }
Create a Module (@Module)
@Module( injects = { BaseApp.class, MainActivity.class, }, includes = { DemoModule.class, })public class AppModule {
private BaseApp app;
public AppModule(BaseApp app) { this.app = app; }
@Provides @Singleton public Context provideApplicationContext() { return app; }}
Create a Root Module (@Module)
public class BaseApp extends Application {
private ObjectGraph objectGraph;
@Override public void onCreate() { super.onCreate(); injectDependencies(); }
private void injectDependencies() { objectGraph = ObjectGraph.create(new AppModule(this)); objectGraph.inject(this); }
public void inject(Object object) { objectGraph.inject(object); }}
Create an Object graph
public class MainActivity extends AppCompatActivity {
@Inject Log mLog;
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
//Add to the object graph. ((BaseApp) getApplication()).inject(this); }
Inject Dependencies (@Inject)
@Module( complete = false, library = true)public class DemoModule {
//……
@Provides@Singleton@Named(“login”)public PreferencesEndPoint provideLoginPreferencesEndPoint(final Context context) { return new PreferenceEndPointImpl(context, “login”);}
@Named - annotation
public class MainActivity extends AppCompatActivity {
@Inject Log mLog; @Inject @Named(“login”) PreferencesEndPoint loginEndPoint;
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
//Add to the object graph. ((BaseApp) getApplication()).inject(this); //…… }
@Named - annotation
public class MainActivity extends AppCompatActivity {
@Inject Log mLog; @Inject Provider<Log> mLogProvider; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
//Add to the object graph. ((BaseApp) getApplication()).inject(this); //……
// Request new object every time requested Log log = mLogProvider.get();
}
@Inject Provider
Thank You!