¿Qué metodología y tecnologías usáis los que programáis en Android?

varuk

Pues quería hacer este hilo para ver, dentro de los que programáis para Android lo que estáis usando. Por ejemplo:

Patrón arquitectónico: MVP, MVVM, MVC...
Lenguaje de programación: Java, Kotlin...
Persistencia de datos local: Realm, Room, DBFlow
Persistencia de datos remota: Firebase, backend propio...
Inyección de depencias: Dagger 1, Dagger 2...
Manejar datos asíncronos: Coroutines de Kotlin, RxJava, LiveData...
Librerías que uséis: Retrofit, Picasso, Glide, butterknife...

Bueno, en general pues hablar un poco de lo que usais. Si no usais nada y simplemente pues vais con lo primero que pilléis también podéis decirlo. Es decir, si no seguís ningún patrón arquitectonico pues lo decís.

También podéis comentar cualquier herramienta que uséis para programar para Android, aunque sea más general. Por ejemplo "Pues yo, para hacer el .gitignore específico para mis proyectos uso la página web https://www.gitignore.io/ con los tags Android y Android Studio"

Vamos, por hablar un poco del tema.

eondev

Ya hace un tiempecito que no hago nada de Android (poco he hecho también la verdad xD) pero de patrones Google recomienda utilizar MVVM o MVP y utilizar Livedata y Room, pero para mí es un puto coñazo. Yo iría por el clásico MVP.
Lenguaje de programación Kotlin, ni pensarlo, todo son ventajas, menos código, bindeo con la vista directamente (bye butterknife) y te recomendaría que mirases https://github.com/Kotlin/anko y https://github.com/InsertKoinIO/koin te correrás vivo, menuda pasada.

Respecto a Rx no es lo mismo que las Corrutinas de Kotlin eh? Una es una librería que añade programación reactiva al lenguaje (ideal para aplicaciones que todo son inputs) y la otra herramienta propia de kotlin para gestionar la concurrencia de forma asíncrona. A mí me molaría utilizar rxAndroid para kotlin, dicen que simplifica muchísimo el diseño y el código.

2 1 respuesta
valdrar

Yo quiero aprender¡, ya se programar en C++ y PHP. ¿Me recomiendas algún manual bueno en pdf que pueda descargar? o algún libro, para empezar a probar cosas? Gracias ¡

1 respuesta
NeV3rKilL

Menudo vértigo da leer eso. Ahora entiendo por qué las aplicaciones son cada vez más pesadas y lentas. Todo para agilizar el desarrollo a costa de rendimiento.

3 respuestas
eondev

#4 La verdad es que ahora las aplicaciones cada vez se pueden hacer mejor, menos código y mayor rendimiento. Pero sí, de base el diseño de Android es una puta locura, va Google y te saca Flutter (que parece ser una prueba de lo que será el framework de FuchsiaOS) sólo con Dart, tócate los cojones xd

varuk

#2 Cierto, patiné en lo de las couritines.

Dices que quieres usar RxJava ¿No es más simple usar LiveData que está para eso? Además, maneja el ciclo de vida y no tienes que estar haciendo "unsuscribe" porque ya él sabe cuando termina el ciclo de la actividad.

Sobre lo de Koin ¿lo recomiendas por encima de Dagger 2?

#3 Podrías mirar cursos de Android en webs como edx o coursera. https://www.edx.org/es/course/android-introduccion-a-la-programacion

Libros no sabría decirte, porque yo he usado pero ya para aprender cosas avanzadas, no desde 0.

3 respuestas
LLoid

Patrón arquitectónico: VIPER, ha venido semiimpuesto por el CTO pero no me parece mal del todo.
Lenguaje de programación: Java, empezaremos a migrar a Kotlin en breve.
Persistencia de datos local: Room
Persistencia de datos remota: Backend propio
Inyección de depencias: Dagger 2
Manejar datos asíncronos: RxJava, aunque yo siempre he querido usar LiveData
Librerías que uséis: Volley para networking y poco más, las de soporte de Android, etc. Lo normal.

Al final con eso y con un buen cliente de Git deberías de ir apañándote. Vamos a empezar a meter tests con Mockito un siglo de estos, y cada vez nos iremos pasando más y más a Android Jetpack, que es el futuro.

Lecherito

#4 pero si las aplicaciones lentas es porque se hace en el puto Javascript de mierda y te lo venden como si fuera la hostia venga ya

4 1 respuesta
valdrar

#6 Gracias¡ me voy a apuntar ahora mismo.

eondev

#6 Por lo que vi en la documentación de Google y en sus ejemplos me pareció un coñazo enorme usar LiveData y conozco a muchos devs que trabajan con Kotlin que hablan bien de rxAndroid , no te puedo decir xD.
Y sobre Koin a mí me parece mucho más simple y fácil para empezar, todo es mirar y hacer pruebas a ver qué te convence más

1 respuesta
Mortium

#8 no tienes ni idea

HeXaN

#4 Sin esto es que directamente no habría aplicaciones grandes xD

voignar

Pues yo uso backend propio más Cordova. Todo dependa de lo que quieras hacer, también te lo digo. Yo es que lo uso sobretodo para llevar webs a aplicación

varuk

#10 No tiene mucho. Son observers como en RxJava (RxAndroid). Simplemente es por cada vista de la app tener un "mini-modelo" donde pasar esos datos y mostrarlos. Es decir, tienes tu modelo de clases (el que tu quieras) pero tienes luego un mini-modelo por cada vista.

Algo así:

1 respuesta
eondev

#14 El concepto es una cosa, pero la implementación LiveData con Room al menos hace cosa de un año y pico que lo vi, me echó para atrás xD. A ver si esta tarde en un rato pego una mirada

valdrar

#6 oh la pagina parece que no va, no deja inscribirse en ningún curso :( y además carga rota. Lo mirare después desde casa a ver.,

s4suk3

Yo soy un hater de rxjava y dagger, me parece over engineered

1 respuesta
LLoid

#17 Qué ise illo, como tengas que hacer cualquier mierda asíncrona mínima ya te merece la pena el RxJava, y la inyección de dependencias es imprescindible en casi cualquier sitio

s4suk3

con lo primero del tema asíncrono puede pasar, si quieres hacer cosas en paralelo puede ayudar, pero lo de inyectar dependencias imprescindible... pues yo no lo necesito, prefiero hacer un new object que romperme la cabeza con los errores de dagger