SlideShare una empresa de Scribd logo
1 de 11
Descargar para leer sin conexión
Dagger
Presenter : Ramesh Akula
http://about.me/aramesh
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!

Más contenido relacionado

La actualidad más candente

La actualidad más candente (19)

mediator
mediatormediator
mediator
 
python and database
python and databasepython and database
python and database
 
C++
C++C++
C++
 
Cloudproject
CloudprojectCloudproject
Cloudproject
 
Constructor overloading & method overloading
Constructor overloading & method overloadingConstructor overloading & method overloading
Constructor overloading & method overloading
 
Classes & objects new
Classes & objects newClasses & objects new
Classes & objects new
 
Database programming
Database programmingDatabase programming
Database programming
 
React hooks
React hooksReact hooks
React hooks
 
Active Object
Active ObjectActive Object
Active Object
 
ConsTRUCTION AND DESTRUCTION
ConsTRUCTION AND DESTRUCTIONConsTRUCTION AND DESTRUCTION
ConsTRUCTION AND DESTRUCTION
 
Constructor&amp; destructor
Constructor&amp; destructorConstructor&amp; destructor
Constructor&amp; destructor
 
New Microsoft Word Document.doc
New Microsoft Word Document.docNew Microsoft Word Document.doc
New Microsoft Word Document.doc
 
Servlet session 9
Servlet   session 9Servlet   session 9
Servlet session 9
 
Java DataBase Connectivity - JDBC Part-2
Java DataBase Connectivity - JDBC Part-2Java DataBase Connectivity - JDBC Part-2
Java DataBase Connectivity - JDBC Part-2
 
Ian 2014.10.24 weekly report
Ian 2014.10.24 weekly reportIan 2014.10.24 weekly report
Ian 2014.10.24 weekly report
 
Dynamic databinding
Dynamic databindingDynamic databinding
Dynamic databinding
 
Python my SQL - create table
Python my SQL - create tablePython my SQL - create table
Python my SQL - create table
 
Constructor destructor.ppt
Constructor destructor.pptConstructor destructor.ppt
Constructor destructor.ppt
 
JVM and OOPS Introduction
JVM and OOPS IntroductionJVM and OOPS Introduction
JVM and OOPS Introduction
 

Destacado

Destacado (18)

Raising the efficiency of the open education system
Raising the efficiency of the open education system Raising the efficiency of the open education system
Raising the efficiency of the open education system
 
Panorámicas
PanorámicasPanorámicas
Panorámicas
 
A previdência do servidor público estadual - Ari Lovera
A previdência do servidor público estadual - Ari LoveraA previdência do servidor público estadual - Ari Lovera
A previdência do servidor público estadual - Ari Lovera
 
Fotos
FotosFotos
Fotos
 
Dedinho
DedinhoDedinho
Dedinho
 
Plano de 5ªaula 5ªserie 6º ano gestar 2012 cópia
Plano de 5ªaula 5ªserie 6º ano gestar 2012   cópiaPlano de 5ªaula 5ªserie 6º ano gestar 2012   cópia
Plano de 5ªaula 5ªserie 6º ano gestar 2012 cópia
 
Ester - Bachelor's degree Diploma
Ester - Bachelor's degree DiplomaEster - Bachelor's degree Diploma
Ester - Bachelor's degree Diploma
 
No Estés Triste
No Estés TristeNo Estés Triste
No Estés Triste
 
British and American
British and AmericanBritish and American
British and American
 
Jovens Brasileiros e o Mundo Mobile
Jovens Brasileiros e o Mundo MobileJovens Brasileiros e o Mundo Mobile
Jovens Brasileiros e o Mundo Mobile
 
American Express
American ExpressAmerican Express
American Express
 
Proyecto bloque 2
Proyecto bloque 2Proyecto bloque 2
Proyecto bloque 2
 
027. Superhik Alkohol Prijeti
027. Superhik   Alkohol Prijeti027. Superhik   Alkohol Prijeti
027. Superhik Alkohol Prijeti
 
PEPTIC ULCER
PEPTIC ULCERPEPTIC ULCER
PEPTIC ULCER
 
The Voicemail Script Part 4
The Voicemail Script Part 4The Voicemail Script Part 4
The Voicemail Script Part 4
 
Audience Feedback
Audience FeedbackAudience Feedback
Audience Feedback
 
Working Title Part 6
Working Title Part 6Working Title Part 6
Working Title Part 6
 
Tablas
Tablas Tablas
Tablas
 

Similar a Dagger1

Idiomatic gradle plugin writing
Idiomatic gradle plugin writingIdiomatic gradle plugin writing
Idiomatic gradle plugin writingSchalk Cronjé
 
Idiomatic Gradle Plugin Writing
Idiomatic Gradle Plugin WritingIdiomatic Gradle Plugin Writing
Idiomatic Gradle Plugin WritingSchalk Cronjé
 
Idiomatic Gradle Plugin Writing
Idiomatic Gradle Plugin WritingIdiomatic Gradle Plugin Writing
Idiomatic Gradle Plugin WritingSchalk Cronjé
 
Idiomatic Gradle Plugin Writing
Idiomatic Gradle Plugin WritingIdiomatic Gradle Plugin Writing
Idiomatic Gradle Plugin WritingSchalk Cronjé
 
Gradle - small introduction
Gradle - small introductionGradle - small introduction
Gradle - small introductionIgor Popov
 
Global objects in Node.pdf
Global objects in Node.pdfGlobal objects in Node.pdf
Global objects in Node.pdfSudhanshiBakre1
 
Chapter 13 introduction to classes
Chapter 13 introduction to classesChapter 13 introduction to classes
Chapter 13 introduction to classesrsnyder3601
 
Sharper Better Faster Dagger ‡ - Droidcon SF
Sharper Better Faster Dagger ‡ - Droidcon SFSharper Better Faster Dagger ‡ - Droidcon SF
Sharper Better Faster Dagger ‡ - Droidcon SFPierre-Yves Ricau
 
Bca 2nd sem u-2 classes & objects
Bca 2nd sem u-2 classes & objectsBca 2nd sem u-2 classes & objects
Bca 2nd sem u-2 classes & objectsRai University
 
Mca 2nd sem u-2 classes & objects
Mca 2nd  sem u-2 classes & objectsMca 2nd  sem u-2 classes & objects
Mca 2nd sem u-2 classes & objectsRai University
 
Dependency injection using dagger2
Dependency injection using dagger2Dependency injection using dagger2
Dependency injection using dagger2Javad Hashemi
 
Basic Gradle Plugin Writing
Basic Gradle Plugin WritingBasic Gradle Plugin Writing
Basic Gradle Plugin WritingSchalk Cronjé
 
Chapter 7 - Defining Your Own Classes - Part II
Chapter 7 - Defining Your Own Classes - Part IIChapter 7 - Defining Your Own Classes - Part II
Chapter 7 - Defining Your Own Classes - Part IIEduardo Bergavera
 
Java căn bản - Chapter7
Java căn bản - Chapter7Java căn bản - Chapter7
Java căn bản - Chapter7Vince Vo
 
object oriented programming using java, second sem BCA,UoM
object oriented programming using java, second sem BCA,UoMobject oriented programming using java, second sem BCA,UoM
object oriented programming using java, second sem BCA,UoMambikavenkatesh2
 

Similar a Dagger1 (20)

Idiomatic gradle plugin writing
Idiomatic gradle plugin writingIdiomatic gradle plugin writing
Idiomatic gradle plugin writing
 
Idiomatic Gradle Plugin Writing
Idiomatic Gradle Plugin WritingIdiomatic Gradle Plugin Writing
Idiomatic Gradle Plugin Writing
 
Idiomatic Gradle Plugin Writing
Idiomatic Gradle Plugin WritingIdiomatic Gradle Plugin Writing
Idiomatic Gradle Plugin Writing
 
Di code steps
Di code stepsDi code steps
Di code steps
 
Idiomatic Gradle Plugin Writing
Idiomatic Gradle Plugin WritingIdiomatic Gradle Plugin Writing
Idiomatic Gradle Plugin Writing
 
Class and object in C++ By Pawan Thakur
Class and object in C++ By Pawan ThakurClass and object in C++ By Pawan Thakur
Class and object in C++ By Pawan Thakur
 
Java Programming - 04 object oriented in java
Java Programming - 04 object oriented in javaJava Programming - 04 object oriented in java
Java Programming - 04 object oriented in java
 
Gradle - small introduction
Gradle - small introductionGradle - small introduction
Gradle - small introduction
 
Global objects in Node.pdf
Global objects in Node.pdfGlobal objects in Node.pdf
Global objects in Node.pdf
 
Chapter 13 introduction to classes
Chapter 13 introduction to classesChapter 13 introduction to classes
Chapter 13 introduction to classes
 
Sharper Better Faster Dagger ‡ - Droidcon SF
Sharper Better Faster Dagger ‡ - Droidcon SFSharper Better Faster Dagger ‡ - Droidcon SF
Sharper Better Faster Dagger ‡ - Droidcon SF
 
Bca 2nd sem u-2 classes & objects
Bca 2nd sem u-2 classes & objectsBca 2nd sem u-2 classes & objects
Bca 2nd sem u-2 classes & objects
 
Mca 2nd sem u-2 classes & objects
Mca 2nd  sem u-2 classes & objectsMca 2nd  sem u-2 classes & objects
Mca 2nd sem u-2 classes & objects
 
Dependency injection using dagger2
Dependency injection using dagger2Dependency injection using dagger2
Dependency injection using dagger2
 
Basic Gradle Plugin Writing
Basic Gradle Plugin WritingBasic Gradle Plugin Writing
Basic Gradle Plugin Writing
 
OOPs & Inheritance Notes
OOPs & Inheritance NotesOOPs & Inheritance Notes
OOPs & Inheritance Notes
 
Java notes
Java notesJava notes
Java notes
 
Chapter 7 - Defining Your Own Classes - Part II
Chapter 7 - Defining Your Own Classes - Part IIChapter 7 - Defining Your Own Classes - Part II
Chapter 7 - Defining Your Own Classes - Part II
 
Java căn bản - Chapter7
Java căn bản - Chapter7Java căn bản - Chapter7
Java căn bản - Chapter7
 
object oriented programming using java, second sem BCA,UoM
object oriented programming using java, second sem BCA,UoMobject oriented programming using java, second sem BCA,UoM
object oriented programming using java, second sem BCA,UoM
 

Último

Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 

Último (20)

Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 

Dagger1

  • 1. Dagger Presenter : Ramesh Akula http://about.me/aramesh
  • 2. dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.squareup.dagger:dagger:1.2.+' provided 'com.squareup.dagger:dagger-compiler:1.2.+' } Gradle Dependencies
  • 3. ❖ @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
  • 4. @Module( complete = false, library = true ) public class DemoModule { //Provide log object @Provides @Singleton public Log provideLog() { return new LogImpl(); } } Create a Module (@Module)
  • 5. @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)
  • 6. 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
  • 7. 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)
  • 8. @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
  • 9. 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
  • 10. 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