Skip to content

elviss116/EMIRANDA_PERUAPPS

Repository files navigation

APPLICACION COMPARTIR LUGARES

La siguiente aplicacion permite a las personas compartir y visualizar los lugares compartidos por otras personas, esta desarrollado en Kotlin.

Arquitectura

El siguiente diagrama representa la arquitecura usada, la unica diferencia es que la fuente externa de datos es Firebase, la cual es almacenada en Room y los datos mostrados al usuario son cargados directamente desde Room

MVVM

Firebase FireStore

La fuente de datos usada es FireStore , ya que a diferencia de realtime , firestore es mas escalable y tiene multiples opciones para filtrar los datos.

Los datos de los lugares compartidos estan almacenados en la coleccion Places

place-firebase

Adicionalmente, cada 30 minutos se almacena la ubicacion de los usuarios, la cual se encuentra en la collecion USERAPP

user-fir

####Firebase Storage

Las imagenes subidas por los usuarios son almacenadas en el directorio /images

storage

KOTLIN FLOW

Se uso flow para poder hacer una escucha en tiempo real de los datos que son agregados al collection "places" de firebase. Cada vez que un nuevo dato es agregado, flow nos permite emitir dicho valor , el cual trae las actualizaciones en tiempo real.

Cuando el Viewmodel que esta haciendo el collect al repository muere, entonces se deja de escuchar los datos de firebase y se remueve la suscripcion mediante el codigo "awaitClose{suscription.remove()}"

flow

WorkManager

Worwkmanager, es un componente de la arquitectura de android , el cual forma parte de JetPack, workmanager nos permite ejecutar tareas en segundo plano siempre y cuando se cumplan ciertas restricciones.

En la aplicacion desarrollada , uno de los requerimientos es que se guarde la ubicacion del usuario cada 30 minutos. Workmanager nos permite realizar esa tarea en 2do plano, independientemente de si la aplicación se encuentea abierta, solo basta con cumplir con las restricciones establecidas para que dicha tarea se ejecute.

En la siguiente captura se puede observar como se configura la restriccion la cual pide que el equipo este conectado a la red, para ejecutar la tarea , y se configura el lapso de tiempo en el cual se va ejecutar, que es cada 30 minutos

work

Navigation Component

El componente Navigation de Android Jetpack te permite implementar la navegación, desde simples clics de botones hasta patrones más complejos, como las barras de apps y los paneles laterales de navegación. El componente Navigation también garantiza una experiencia del usuario coherente y predecible, ya que se adhiere a un sistema establecido de conjunto de principios.

navi

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages