• Maandag → Full IT team stand-up
• Algemene stand van zaken in IT
• Lopende en nieuwe projecten indelen
• Release coördineren
• Problemen afgelopen week bespreken
• Maandag t.e.m. vrijdag → Project stand-up
• Werk binnen project verdelen en plannen
Package Structure
• Top-level package indelen in grote logische
blokken (database, service, view, …)
• 2 voornamelijke manieren voor verdere
indeling
• Per type class
• Per Feature
• Groot project: per feature en type
Slide 30
Slide 30 text
Project structure
Slide 31
Slide 31 text
Android Development
View Libraries
Slide 32
Slide 32 text
Butter knife
Slide 33
Slide 33 text
Butter knife
• Geen findViewById(…) meer.
• Bind views, resources, onClick, …
• Genereert code tijdens de build
Android Development
Dependency Injection Libraries
Slide 37
Slide 37 text
Dagger2
Slide 38
Slide 38 text
Dagger2
• Dependency injection framework
• Loskoppeling
• Uitbreidbaar
• Onderhoudbaar
• Door Google en Square
Slide 39
Slide 39 text
Android Development
Service Libraries
Slide 40
Slide 40 text
OkHttp
Slide 41
Slide 41 text
OkHttp
• Vervanging van Apache HTTP client
• Verbetering in stabiliteit
• Verbetering in compressie
• Silent recovery
• Synchroon blokkerend
• Asynchroon met callbacks
Slide 42
Slide 42 text
Retrofit
Slide 43
Slide 43 text
Retrofit
• Genereert netwerkcode aan de hand van een
simpel te schrijven Interface tijden build
• Converters voor Gson en Jackson (json),
SimpleXML, …, roll-your-own.
• Synchroon blokkerend
• Asynchroon met callbacks
Slide 44
Slide 44 text
Android Development
Database Libraries
Slide 45
Slide 45 text
Database Libraries
• Wat we willen → ORM
• Veel libraries beschikbaar
• ORMLite
• GreenDao
• DBFlow
• SugerORM
• (Realm)
• …
Slide 46
Slide 46 text
Database Libraries
• Wat we willen → ORM
• Veel libraries beschikbaar
• ORMLite
• GreenDao
• DBFlow
• SugerORM
• (Realm)
• …
Slide 47
Slide 47 text
DBFlow
• Elimineert boilerplate
• Genereert code tijdens build
• Eenvoudige API voor Insert, Select, …
• Migratie oplossing
• SQLite
• Eenvoudig in combinatie met Retrofit
Slide 48
Slide 48 text
Na development
Slide 49
Slide 49 text
Na development
• Peer review
• Testing
• Beta release
• Release
• Release Opvolging
Slide 50
Slide 50 text
Peer review
• Andere developer kijkt naar de code
• Kijkt of de huisstijl gerespecteerd is
• Weet ook wat er in de code zit
(Beta) Release
• Build maken met release keystore
• Goed bewaren → anders nooit meer updaten
• Beta release naar Google+ Community
• Beide op de Google Developer Console
• Paar uur later beschikbaar
Slide 53
Slide 53 text
Release Opvolging
• Crashes en exception logs opvolgen
• Play Store
• Crashlytics
• Apteligent (vroeger Crittercism)
• Customer care
• Analytics data bekijken
Slide 54
Slide 54 text
Nieuwe Trends
Slide 55
Slide 55 text
MVP
Slide 56
Slide 56 text
MVC
View
Model Controller
Slide 57
Slide 57 text
MVP
View
Model Presenter
Slide 58
Slide 58 text
MVP
View
Use Cases
Business Logic
Database
Service
Presenter
Slide 59
Slide 59 text
MVP
View
Model Presenter
Retrieves/stores data
Provides form
atted
data
Delegates click events
Slide 60
Slide 60 text
MVP Voordelen
• Simpeler testen
• Mock View en Presenter
• Gemakkelijk te onderhouden
• Gemakkelijk View en Presenter switchen
• A/B test
• Nieuwe UI iteratie
• …
Slide 61
Slide 61 text
MVP Nadelen
• Complexere code
• Meer code
• (Maar zijn dit echt nadelen?)
Slide 62
Slide 62 text
RXJava
Slide 63
Slide 63 text
RXJava
• Functional Reactive Programming
• Zeer gemakkelijke async
• Ideaal voor
• Service calls
• Database read/write
• UI events
• Langdurige taken
• …