7. MADRID · NOV 21-22 · 2014
Código
Java bien escrito:
Findbugs
Checkstyle
PMD/CPD
Ignorad los field naming conventions del
core de Android
8. MADRID · NOV 21-22 · 2014
Código
● Clean Code
● SOLID
9. Buenas prácticas de Android
Usad Android Lint
MADRID · NOV 21-22 · 2014
Huid de clases Application
10. MADRID · NOV 21-22 · 2014
Arquitectura
No es un juego de niños
Pero hay buenas propuestas:
● Clean Architecture
● Arquitectura Hexagonal
11. MADRID · NOV 21-22 · 2014
Y en UI
Separad concerns!
● MVP
● MVP/MVVM
Incluso podéis plantearos si usar fragments
12. MADRID · NOV 21-22 · 2014
Librerías
Hay unas pocas librerías…
Con muchas recomendaciones...
Pero algunas imprescindibles
13. Inyección de dependencias
● Usaréis alguna librería de inyección de
dependencias, no?
MADRID · NOV 21-22 · 2014
14. MADRID · NOV 21-22 · 2014
Inyección de dependencias
● Roboguice
● Dagger (+ButterKnife)
15. Buenas prácticas de Android
Ignorad el título de las guías “Avoid
dependency injection frameworks“
Usad Proguard (vale, hay problemas)
MADRID · NOV 21-22 · 2014
16. MADRID · NOV 21-22 · 2014
APIs REST
● Async Tasks
17. MADRID · NOV 21-22 · 2014
APIs REST
● Volley
● Retrofit
18. MADRID · NOV 21-22 · 2014
APIs REST
public interface GitHubService {
@GET("/users/{user}/repos")
List<Repo> listRepos(@Path("user") String user);
}
vs
StringRequest stringRequest = new StringRequest(Request.Method.GET, url,
new Response.Listener() {
…
}
19. MADRID · NOV 21-22 · 2014
Carga de imágenes
● Universal Image Loader
● Picasso
23. Comunicación entre servicios...
Es un dolor comunicar información entre
servicios, actividades, async tasks…
MADRID · NOV 21-22 · 2014
Bus de eventos al rescate!
24. MADRID · NOV 21-22 · 2014
Comunicación
EventBus
Otto
25. MADRID · NOV 21-22 · 2014
Comunicación
eventBus.post(new AnyEventType(42));
eventBus.register(this);
public void onEvent(AnyEventType event) {...};
vs
eventBus.post(new AnyEventType(42));
@Subscribe public void eventAvailable(AnyEventType event) {}
26. Keep an eye on
● Reactive programming en Android con
RxJava
MADRID · NOV 21-22 · 2014
● Echadle un ojo
27. Keep an eye on
RxJava(+[RxAndroid]) + Retrofit = Bliss
MADRID · NOV 21-22 · 2014
eventAPI.login().
flatMap(status -> api.getUserStatus()).
subscribe(onComplete, onError);
api.login(new Callback<ResponseBody>() {
@Override
public void success(...) {
api.getUserStatus(new Callback<UserStatus>() {
@Override
public void success() {