Android / Architecture

Clean Android without bus

A lot of people are wondering why use a bus in my Clean Android implementation (Clean-Contacts repo on GitHub). And the reply is simple: I need to to get the reply of a previously launched interactor in a new instance of a presenter because on a rotation change the presenter is destroyed also the view, …

Android

Coordinator as a library

Days ago I released a gist called “Coordinator” it was a simple class that handles X async actions and triggers a Runnable when all actions are complete. I saw some interest in Twitter / Github so I promoted the gist to library and I added Annotations to be easy to use.

Now you can configure Coordinator …

Mac

Dynamically creating playlist of artist’s popular songs

I do not use Spotify, play music or any streaming music service. I have a nice library in iTunes that is well labeled with my own ID3 Tags. I hear music around 6hr a day when I’m working because it keeps me focused in my work, that’s why I wear headphones with noise canceling too. …

Android

My way to clean Android

¡Hola desde Salamanca! He sido invitado como ponente al Android Day que organiza el GDG de Salamanca. He preparado una ponencia sobre clean architecture en Android que me gustaría compartir con vosotros. Las slides están accesibles en Slideshare, el video de la charla en: Youtube y por último y no menos importante el código de …

Android

Presentando Coordinator o como evitar flags

¿Cuantas de nuestras clases necesitan crear flags para coordinar varias tareas asincronas? Te presento Coordinator.

Una clase de utilidad que hará que evites flags para coordinar varias acciones. Simplemente almacena una lista de strings como ids de acciones y lanza un callback cuando todas estén terminadas. Este es un código sin Coordinator:

boolean completedOne = false;
boolean completedTwo …

Android

Quitando permisos innecesarios de librerías

Imaginate que usamos una librería de un tercero que hace varias cosas y usa permisos para una funcionalidad X que nosotros no usamos. Existe una solución, en gradle se hace un merge de todos los manifest de todas las librerías si añadimos esta directiva en nuestro manifest:

<uses-permission android:name=”android.permission.GET_ACCOUNTS” tools:node=”remove” />

le decimos expresamente al merger que …