Me he encontrado con una presentación de Romain Guy y Chet Haase describiendo distintos trucos, técnicas y consejos varios relativos al desarrollo de interfaces de usuario en Android. La charla ya tiene más de un año, no es nada moderno. Pero al menos yo es la primera vez que me la encuentro y me ha impresionado mucho.
La principal lección que he sacado es que muchas de las cosas que podemos considerar como buenas prácticas al escribir código Java normal no son necesariamente buenas prácticas al escribir código Android. Por ejemplo, los recogedores de basura de Java en el escritorio son altamente eficientes, y esto hace que la creación de múltiples objetos pequeños que se van a usar durante poco tiempo en Java no sea problemático; es más, Joshua Bloch lo recomienda en su libro Effective Java. Esto no se aplica a dispositivos Android, donde la creación de estos objetos puede disparar al recogedor de basuras, y si esto sucede en medio de una animación habrá paradas. Romain Guy y Chet Haase recomiendan usar objetos estáticos que sean variables de instancia para evitar la creación de múltiples objetos dentro de métodos.
De un modo similar el uso de Boxing y autoboxig o de varargs producen un montón de objetos intermedios que pueden terminar desencadenando pausas del recogedor de basuras. Siempre que sea posible, es recomendable evitar varargs, y usar "float" en vez de "Float". A este último respecto, tened en cuenta que siempre que añadís un tipo primitivo una colección se convierte en la clase wraper correspondiente.
En resumen, lo que pueden ser buenas prácticas al escribir aplicaciones Java SE puede ser lo contrario al escribir aplicaciones Android. Una interesante lección que he aprendido en esta presentación. Os dejo aquí el video de la presentación: