défragmentez vos apps avec mortar !

56
Défragmentez vos apps avec Moar ! Pierre-Yves Ricau / @Piwai

Upload: pierre-yves-ricau

Post on 29-May-2015

1.154 views

Category:

Engineering


6 download

DESCRIPTION

Slides pour un talk à Droidcon Paris 2014: http://fr.droidcon.com/2014/agenda/detail?title=D%C3%A9fragmentez+vos+apps+avec+Mortar+! Vous en avez marre de passer votre temps à jongler entre les 42 lifecycle callbacks des Fragments pour prévenir crashs et autre bugs, à halluciner devant le code de FragmentManagerImpl.moveToState(), sans jamais être sûrs de tout maîtriser ? Défragmentez vos apps ! Mortar est une lib qui permet de se découpler de l’Activity et de modulariser votre code sous forme de Views et de Presenters, que vous pourrez très simplement réutiliser. Ce talk est un retour d’expérience alternant principes généraux et exemples concrets basés sur Square Register. La suppression totale des fragments nous a permis d’implémenter une UI alternative pour tablette très rapidement, en réutilisant un maximum de composants existants.

TRANSCRIPT

Page 1: Défragmentez vos apps avec Mortar !

Défragmentez vos apps avec Mortar !

Pierre-Yves Ricau / @Piwai

Page 2: Défragmentez vos apps avec Mortar !
Page 3: Défragmentez vos apps avec Mortar !
Page 4: Défragmentez vos apps avec Mortar !
Page 5: Défragmentez vos apps avec Mortar !
Page 6: Défragmentez vos apps avec Mortar !

Dev Heureux=

Créativité

Page 7: Défragmentez vos apps avec Mortar !
Page 8: Défragmentez vos apps avec Mortar !

Fragments

Page 9: Défragmentez vos apps avec Mortar !

Goals

Page 10: Défragmentez vos apps avec Mortar !

“Because a tablet's screen is much larger than that of a handset, there's more room to combine and interchange UI components. !

Fragments allow such designs without the need for you to manage complex changes to the view hierarchy.”

Page 11: Défragmentez vos apps avec Mortar !
Page 12: Défragmentez vos apps avec Mortar !
Page 13: Défragmentez vos apps avec Mortar !
Page 14: Défragmentez vos apps avec Mortar !

github.com/xxv/android-lifecycle

https://www.flickr.com/photos/albaraa/7087660805/

Page 15: Défragmentez vos apps avec Mortar !
Page 16: Défragmentez vos apps avec Mortar !

Fragments =

Salade périgourdine

• View binding & conf • Business logic

=> Hard to test

Page 17: Défragmentez vos apps avec Mortar !

Hard to debug

FragmentManagerImpl

Page 18: Défragmentez vos apps avec Mortar !

FragmentTransaction

Page 19: Défragmentez vos apps avec Mortar !

WTFs/min = 2fragment count

Page 20: Défragmentez vos apps avec Mortar !
Page 21: Défragmentez vos apps avec Mortar !

Lessons

• “Programming is hard” => Making programming easy is hard.

• activities + layout inflater + views • Single Activity interface

Page 22: Défragmentez vos apps avec Mortar !
Page 23: Défragmentez vos apps avec Mortar !
Page 24: Défragmentez vos apps avec Mortar !
Page 25: Défragmentez vos apps avec Mortar !
Page 26: Défragmentez vos apps avec Mortar !
Page 27: Défragmentez vos apps avec Mortar !
Page 28: Défragmentez vos apps avec Mortar !
Page 29: Défragmentez vos apps avec Mortar !
Page 30: Défragmentez vos apps avec Mortar !
Page 31: Défragmentez vos apps avec Mortar !
Page 32: Défragmentez vos apps avec Mortar !
Page 33: Défragmentez vos apps avec Mortar !
Page 34: Défragmentez vos apps avec Mortar !
Page 35: Défragmentez vos apps avec Mortar !
Page 36: Défragmentez vos apps avec Mortar !
Page 37: Défragmentez vos apps avec Mortar !
Page 38: Défragmentez vos apps avec Mortar !
Page 39: Défragmentez vos apps avec Mortar !
Page 40: Défragmentez vos apps avec Mortar !
Page 41: Défragmentez vos apps avec Mortar !
Page 42: Défragmentez vos apps avec Mortar !

Scopes• ObjectGraph => holds singletons => Divide app in a tree of scopes • Create when needed, GC when done.

Page 43: Défragmentez vos apps avec Mortar !

Dagger plus graphs

Page 44: Défragmentez vos apps avec Mortar !
Page 45: Défragmentez vos apps avec Mortar !

Mortar

• Create, access and manage scopes => Hides scopes into a ContextWrapper

• Lifecycle when you need it

Page 46: Défragmentez vos apps avec Mortar !
Page 47: Défragmentez vos apps avec Mortar !
Page 48: Défragmentez vos apps avec Mortar !

Creating

Page 49: Défragmentez vos apps avec Mortar !

Destroying

Page 50: Défragmentez vos apps avec Mortar !
Page 51: Défragmentez vos apps avec Mortar !
Page 52: Défragmentez vos apps avec Mortar !
Page 53: Défragmentez vos apps avec Mortar !
Page 54: Défragmentez vos apps avec Mortar !
Page 55: Défragmentez vos apps avec Mortar !

Flow

Page 56: Défragmentez vos apps avec Mortar !

Questions?

• github.com/square/dagger • github.com/square/mortar • github.com/square/flow

@Piwai