Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Design & be reactive on Android with Iron Man i...
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Saul Molinero
November 27, 2015
Programming
950
16
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Design & be reactive on Android with Iron Man in a clean way
Saul Molinero
November 27, 2015
Transcript
102 slides
Design & be reactive on Android with Iron Man in
a clean way Saúl Molinero MADRID · NOV 27-28 · 2015 @_saulmm
MADRID · NOV 27-28 · 2015 @_saulmm Popsy
MADRID · NOV 27-28 · 2015 @_saulmm DEPENDENCY INjECTION Coordinator
Layout RXJAVA RETROFIT 2 CLEAN ARCHITECTURE DATA BINDING OKhttp
MADRID · NOV 27-28 · 2015 @_saulmm CLEAN ARCHITECTURE
MADRID · NOV 27-28 · 2015 @_saulmm SOLID
MADRID · NOV 27-28 · 2015 @_saulmm SOLID SINGLE responsibility
OPEN-CLOSED LISKOV SUBSTITUTION INTERFACE SEGREGATION DEPENDENCY INVERSION
MADRID · NOV 27-28 · 2015 @_saulmm - Easy to
test - Easy to add - Easy to hide implementations Featuring:
MADRID · NOV 27-28 · 2015 @_saulmm Views PRESENTER INTERACTOR
/ USECASE INTERACTOR / USECASE INTERACTOR / USECASE REPOSITORY DATASOURCE DATASOURCE DATASOURCE View Interface INTERACTOR INTERFACE REPO INTERFACE DATA SOURCE INTERFACE
MADRID · NOV 27-28 · 2015 @_saulmm Activity / Fragment
/ Dialog / Whatever CLEAN
MADRID · NOV 27-28 · 2015 @_saulmm Activity / Fragment
/ Dialog / Whatever CLEAN
MADRID · NOV 27-28 · 2015 @_saulmm Activity / Fragment
/ Dialog / Whatever CLEAN
MADRID · NOV 27-28 · 2015 @_saulmm Activity / Fragment
/ Dialog / Whatever CLEAN
MADRID · NOV 27-28 · 2015 @_saulmm Presenter CLEAN
MADRID · NOV 27-28 · 2015 @_saulmm RETROFIT
MADRID · NOV 27-28 · 2015 @_saulmm RETROFIT 2
MADRID · NOV 27-28 · 2015 @_saulmm RETROFIT 2
MADRID · NOV 27-28 · 2015 @_saulmm RETROFIT 2
MADRID · NOV 27-28 · 2015 @_saulmm Asynchronous Synchronous RETROFIT
2
MADRID · NOV 27-28 · 2015 @_saulmm Asynchronous Synchronous RETROFIT
2
MADRID · NOV 27-28 · 2015 @_saulmm Call pattern RETROFIT
2
MADRID · NOV 27-28 · 2015 @_saulmm RETROFIT 2
MADRID · NOV 27-28 · 2015 @_saulmm RETROFIT 2
MADRID · NOV 27-28 · 2015 @_saulmm OKHTTP OkHttp
MADRID · NOV 27-28 · 2015 @_saulmm OKHTTP
MADRID · NOV 27-28 · 2015 @_saulmm Support design library
MADRID · NOV 27-28 · 2015 @_saulmm DESIGN
MADRID · NOV 27-28 · 2015 @_saulmm DESIGN
MADRID · NOV 27-28 · 2015 @_saulmm DESIGN
MADRID · NOV 27-28 · 2015 @_saulmm DESIGN
MADRID · NOV 27-28 · 2015 @_saulmm DESIGN
MADRID · NOV 27-28 · 2015 @_saulmm DESIGN
MADRID · NOV 27-28 · 2015 @_saulmm Support design library
Coordinator layout
MADRID · NOV 27-28 · 2015 @_saulmm
MADRID · NOV 27-28 · 2015 @_saulmm
MADRID · NOV 27-28 · 2015 @_saulmm
MADRID · NOV 27-28 · 2015 @_saulmm
MADRID · NOV 27-28 · 2015 @_saulmm
MADRID · NOV 27-28 · 2015 @_saulmm BEHAVIORS
MADRID · NOV 27-28 · 2015 @_saulmm BEHAVIORS
MADRID · NOV 27-28 · 2015 @_saulmm BEHAVIORS
MADRID · NOV 27-28 · 2015 @_saulmm BEHAVIORS
MADRID · NOV 27-28 · 2015 @_saulmm BEHAVIORS
MADRID · NOV 27-28 · 2015 @_saulmm BEHAVIORS
MADRID · NOV 27-28 · 2015 @_saulmm DATA BINDING
MADRID · NOV 27-28 · 2015 @_saulmm
MADRID · NOV 27-28 · 2015 @_saulmm
MADRID · NOV 27-28 · 2015 @_saulmm
MADRID · NOV 27-28 · 2015 @_saulmm DATA BINDING
MADRID · NOV 27-28 · 2015 @_saulmm DATA BINDING
MADRID · NOV 27-28 · 2015 @_saulmm DATA BINDING
MADRID · NOV 27-28 · 2015 @_saulmm DATA BINDING
MADRID · NOV 27-28 · 2015 @_saulmm DATA BINDING
MADRID · NOV 27-28 · 2015 @_saulmm DATA BINDING
MADRID · NOV 27-28 · 2015 @_saulmm DATA BINDING
MADRID · NOV 27-28 · 2015 @_saulmm DATA BINDING
MADRID · NOV 27-28 · 2015 @_saulmm DATA BINDING
MADRID · NOV 27-28 · 2015 @_saulmm DATA BINDING
MADRID · NOV 27-28 · 2015 @_saulmm DATA BINDING
MADRID · NOV 27-28 · 2015 @_saulmm == DATA BINDING
MADRID · NOV 27-28 · 2015 @_saulmm DATA BINDING
MADRID · NOV 27-28 · 2015 @_saulmm DATA BINDING
MADRID · NOV 27-28 · 2015 @_saulmm DEPENDENCY INJECTION
MADRID · NOV 27-28 · 2015 @_saulmm Testing DEPENDENCY INJECTION
Low coupling MODULARITY
MADRID · NOV 27-28 · 2015 @_saulmm DEPENDENCY INJECTION
MADRID · NOV 27-28 · 2015 @_saulmm DEPENDENCY INJECTION
MADRID · NOV 27-28 · 2015 @_saulmm DEPENDENCY INJECTORS
MADRID · NOV 27-28 · 2015 @_saulmm DEPENDENCY INJECTION
MADRID · NOV 27-28 · 2015 @_saulmm : ) DEPENDENCY
INJECTION
MADRID · NOV 27-28 · 2015 @_saulmm : ) DEPENDENCY
INJECTION
MADRID · NOV 27-28 · 2015 @_saulmm ¿? DEPENDENCY INJECTION
MADRID · NOV 27-28 · 2015 @_saulmm DEPENDENCY INJECTION
MADRID · NOV 27-28 · 2015 @_saulmm ¿? DEPENDENCY INJECTION
MADRID · NOV 27-28 · 2015 @_saulmm ¿? DEPENDENCY INJECTION
MADRID · NOV 27-28 · 2015 @_saulmm ¿? DEPENDENCY INJECTION
MADRID · NOV 27-28 · 2015 @_saulmm … DEPENDENCY INJECTION
MADRID · NOV 27-28 · 2015 @_saulmm DEPENDENCY INJECTION -
Dagger 2 modules
MADRID · NOV 27-28 · 2015 @_saulmm DEPENDENCY INJECTION -
Dagger 2 modules
MADRID · NOV 27-28 · 2015 @_saulmm DEPENDENCY INJECTION -
Dagger 2 modules
MADRID · NOV 27-28 · 2015 @_saulmm RX Java
MADRID · NOV 27-28 · 2015 @_saulmm
MADRID · NOV 27-28 · 2015 @_saulmm Characters stream RESULTS
stream
MADRID · NOV 27-28 · 2015 @_saulmm (observable) (subscriber)
MADRID · NOV 27-28 · 2015 @_saulmm Observable SubscribeR RX
JAVA
MADRID · NOV 27-28 · 2015 @_saulmm Observable onNext(T t)
-> emits items onCompleted() -> no errors and no more emissions onError(Throwable t) -> an error has happened RX JAVA
MADRID · NOV 27-28 · 2015 @_saulmm Observable RX JAVA
fetchCharacters();
MADRID · NOV 27-28 · 2015 @_saulmm Observable Subscriber RX
JAVA onNext
MADRID · NOV 27-28 · 2015 @_saulmm Observable Subscriber RX
JAVA onError
MADRID · NOV 27-28 · 2015 @_saulmm Observable Subscriber RX
JAVA onCompleted
MADRID · NOV 27-28 · 2015 @_saulmm Observable Subscriber Scheduler
RX JAVA
MADRID · NOV 27-28 · 2015 @_saulmm RX JAVA
MADRID · NOV 27-28 · 2015 @_saulmm Observable Subscriber Scheduler
RX JAVA
MADRID · NOV 27-28 · 2015 @_saulmm Observable Subscriber Scheduler
RX JAVA
MADRID · NOV 27-28 · 2015 @_saulmm RX JAVA
MADRID · NOV 27-28 · 2015 @_saulmm RX JAVA OPERATORS
!!!
MADRID · NOV 27-28 · 2015 @_saulmm RX JAVA OPERATORS
!!!
MADRID · NOV 27-28 · 2015 @_saulmm RX JAVA OPERATORS
!!!
MADRID · NOV 27-28 · 2015 @_saulmm RX JAVA OPERATORS
!!!
MADRID · NOV 27-28 · 2015 @_saulmm REFERENCES
MADRID · NOV 27-28 · 2015 @_saulmm https:/ /github.com/saulmm/Avengers
MADRID · NOV 27-28 · 2015 @_saulmm References http:/ /www.slideshare.net/flipper83/forgetting-android
http:/ /pguardiola.com/blog/clean-architecture-part-1/ http:/ /fernandocejas.com/2014/09/03/architecting-android-the-clean-way/ http:/ /www.materialup.com/posts/marvel-avengers-app-animation-concept https:/ /speakerdeck.com/realm/functional-reactive-programming-in-java-by-juan-gomez-droidcon-nyc-2015 https:/ /speakerdeck.com/realm/bay-area-android-yigit-boyar-and-george-mount-data-binding-in-android-6-dot-0 http:/ /es.slideshare.net/PedroVicenteGmezSnch/dependency-injection-on-android-spanish https:/ /github.com/PaNaVTEC/Clean-Contacts
MADRID · NOV 27-28 · 2015 @_saulmm References http:/ /www.slideshare.net/jmpereirag/limpiando-espero-la-arquitectura-que-yo-quiero
MADRID · NOV 27-28 · 2015 @_saulmm THANKS !!
More Decks by Saul Molinero
See All by Saul Molinero
Hidden gems and wats for the Modern android Developer
saulmm
0
230
Hidden gems and wats for modern Android Development
saulmm
8
950
Android Dev Tools & Workflows
saulmm
3
510
Espresso Workshop, UI Testing en Android
saulmm
2
160
Android Dev Tools & Workflows
saulmm
0
270
Tools & tips of the trade for the Android Developer
saulmm
31
6k
Android Wear vs. Tizen (Apr. 2015)
saulmm
3
1.4k
From Material Design to Android Wear
saulmm
5
720
A glance to android wear
saulmm
3
340
Other Decks in Programming
See All in Programming
はじめてのPLATEAU
nokonoko1203
1
640
Secure Your Coding Agent Like It’s Malware (v1.5) 🇬🇧 @Code.talks 2026
richargh
0
140
作れるエンジニアから、価値を届けるエンジニアへ
ryunakayama
1
270
PumaからFalconに移行したRailsアプリケーションでの実践
falcon8823
0
380
SODA - FACT BOOK(JP)
sodainc
1
40k
protojson における文字化けの扱い
kazuki1023
0
390
Materialが消えた日 〜真っ白なFlutterキャンバスにRenderObjectで絵を描く〜
umigishiaoi
0
160
LLM 101: Exploring LLMs, Starting with Tokens.
dalinaum
0
100
Spec-Driven Development - Why Vaadin Is the Perfect Fit
simas
PRO
0
250
クラウドゲーミングのパフォーマンス最適化に挑む / Cloud Gaming Performance Tuning
vivion
0
330
現場と育てるRailsモデリング 〜Spreadsheetから始めたモデル設計〜
siroemk
2
1.2k
AIが生成したコードは読むべきか?抽象化設計とコードの品質保証 / abstraction-design-and-quality
minodriven
16
9.1k
Featured
See All Featured
Abbi's Birthday
coloredviolet
5
11k
Designing for humans not robots
tammielis
254
26k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
1
300
Optimising Largest Contentful Paint
csswizardry
37
4k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1.4k
For a Future-Friendly Web
brad_frost
184
11k
Believing is Seeing
oripsolob
1
280
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
430
Ten Tips & Tricks for a 🌱 transition
stuffmc
1
280
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
2
350
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
1
240