Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Droidy Architectures in a messy world
Search
Roberto Orgiu
December 02, 2017
Programming
0
35
Droidy Architectures in a messy world
Slides of the talk I gave at DevFest1 Veneto 2017
Roberto Orgiu
December 02, 2017
Tweet
Share
More Decks by Roberto Orgiu
See All by Roberto Orgiu
Wellness & Droid
tiwiz
0
73
Behind the curtains
tiwiz
0
24
The Importance of Being Tested
tiwiz
0
270
An Android Dev start to Kotlin MPP
tiwiz
0
99
Fantastic API and where to find them
tiwiz
0
33
Flipping the Koin @ GDG Dev Party
tiwiz
1
33
Flipping the Koin
tiwiz
2
110
Trip into the async world @ NYC Kotlin Meetup
tiwiz
0
59
Trip into the async world
tiwiz
1
83
Other Decks in Programming
See All in Programming
App Router への移行は「改善」となり得るのか?/ Can migration to App Router be an improvement
takefumiyoshii
1
120
オブジェクト指向コードレビューの新しいアプローチ
akkie76
3
1.5k
せっかくモデル図描くのなら、嬉しいことが多い方がいいよね!
kuboaki
1
1.7k
オブジェクトしこう
okuramasafumi
2
130
RubyVM を PHP で実装する 〜Hello World を出力するまで〜
memory1994
PRO
1
490
自動テスト実行結果の目的を整理する / Organizing objectives of automated test results
twada
PRO
10
2.1k
htmx is fun!
codehex
2
190
Introduction for Open Source Swift Workshop
giginet
PRO
0
180
オブジェクト指向は必要なのか / Is object-oriented needed?
kishida
27
19k
IntelliJ IDEA を知らなかった 自分に教えたい小ネタ集 / IntelliJ IDEA Hints for My Past Self
mackey0225
3
170
Open Source Swiftc Workshop
kitasuke
1
180
決断するための勇気、そのためのBacklog / Courage to make decisions, Backlog for that.
seike460
PRO
4
1.9k
Featured
See All Featured
Music & Morning Musume
bryan
39
5.5k
How GitHub Uses GitHub to Build GitHub
holman
467
290k
Keith and Marios Guide to Fast Websites
keithpitt
407
22k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
226
16k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
272
12k
Put a Button on it: Removing Barriers to Going Fast.
kastner
58
3k
Gamification - CAS2011
davidbonilla
76
4.5k
Navigating Team Friction
lara
177
13k
Designing for humans not robots
tammielis
247
25k
Making the Leap to Tech Lead
cromwellryan
122
8.4k
Clear Off the Table
cherdarchuk
82
310k
GraphQLの誤解/rethinking-graphql
sonatard
48
9.1k
Transcript
Droidy in a messy Architectures world
@_tiwiz
Introducing Architecture Components…
None
Expected reaction
YOU ARE NOT FORCED TO USE THEM ALL AT THE
SAME TIME. Someone, somewhere
None
Other expected reaction
LIVEDATA
veryLongCalculation()
veryLongCalculation() expecting result?
veryLongCalculation()
veryLongCalculation() synchronous
veryLongCalculation() synchronous
veryLongCalculation()
veryLongCalculation() listener
veryLongCalculation()
veryLongCalculation() .observe()
veryLongCalculation() .observe()
ROOM
list_of_cities.json
list_of_cities.json List<City>
list_of_cities.json List<City> $
list_of_cities.json List<City> Cache
List<City> Cache
List<City> Cache $
VIEWMODEL
getDataFromBackend()
getDataFromBackend() dataPresenter
getDataFromBackend() dataPresenter ?
getDataFromBackend() dataPresenter viewModel
getDataFromBackend() dataPresenter viewModel !
LIFECYCLE
clientApi.onCreate() clientApi.onStart() clientApi.onStop() clientApi.onDestroy()
clientApi.onCreate() clientApi.onStart() clientApi.onStop() clientApi.onDestroy() Activity
clientApi.onCreate() clientApi.onStart() clientApi.onStop() clientApi.onDestroy() Activity
clientApi.onCreate() clientApi.onStart() clientApi.onStop() clientApi.onDestroy() LifecycleObserver Activity
clientApi.onCreate() clientApi.onStart() clientApi.onStop() clientApi.onDestroy() LifecycleObserver Activity
clientApi.onCreate() clientApi.onStart() clientApi.onStop() clientApi.onDestroy() LifecycleObserver Activity
None
ProcessLifecycleOwner
None
None
WebView
WebView
ON_START
ON_START Save system status Apply app status (system wide)
ON_STOP
ON_STOP Load system status Apply back system status
PAGINATION
List<City>
List<City> RecyclerView
List<City> RecyclerView $
List<City>
List<City> PagedListAdapter
List<City> PagedListAdapter no lag!
List<City> PagedListAdapter no lag! better UX!
None
None
open.nytimes.com @nytdev github.com/NYTimes developers.nytimes.com
Thank You
Q?