WFSpain Android App - Imágenes y persistencia

19
Imágenes, Loaders y Persistencia

Transcript of WFSpain Android App - Imágenes y persistencia

Page 1: WFSpain Android App - Imágenes y persistencia

Imágenes, Loaders y Persistencia

Page 2: WFSpain Android App - Imágenes y persistencia

¿EN QUÉ CONSISTE LA APP?

• Es una app Android para poder hacer uso como usuario de la web wedfotospain.com.

• Permite buscar y pedir fotógrafos de boda según donde vivas, tu presupuesto, tu estilo…

• Tiene un repertorio muy amplio de fotógrafos de gran calidad con galerías.

Page 3: WFSpain Android App - Imágenes y persistencia
Page 4: WFSpain Android App - Imágenes y persistencia

Puntos clave:

3 meses de desarrollo.

Imágenes

Persistencia de datos

Carga de datos

Page 5: WFSpain Android App - Imágenes y persistencia

MUCHAS IMÁGENES, POCA RAM

• Apps Android tienen poca RAM: 16MB - 288MB

• JPGs de 50KB pueden ser 7MB-10MB en bitmap.

• Muchas imágenes = app sin imágenes. OutOfMemoryException.

Page 6: WFSpain Android App - Imágenes y persistencia

LIBRERÍAS DE CARGA DE IMÁGENES

Universal Image Loader:

• Altamente configurable.

• Permite decir qué tipo de caché usar, cuándo y su tamaño.

• IMPORTANTE: Sólo puede cargar imágenes en el hilo de la UI (hasta versión 1.9.2).

Square’s Picasso:

• Muy sencillo de usar.

• Poco configurable.

• Puede cargar imágenes donde quiera.

Page 7: WFSpain Android App - Imágenes y persistencia

• Evitar cargar imágenes con getDrawable() o en XML:

• Carga las imágenes a máxima calidad (JPGs con canal alpha).

• Usar la configuración RGB_565 que consume mucho menos que la ARGB_8888.

• Usar BitmapFactory.inJustDecodeBounds para saber el tamaño del Bitmap y BitmapFactory.inSampleSize para cargarla con mejor o peor calidad u outWidth u outHeight para el tamaño exacto.

Page 8: WFSpain Android App - Imágenes y persistencia

LOADERS

• Permiten cargar datos en segundo plano:

• Enmascaran el origen.

• Se adaptan a los giros de pantalla y otros cambios.

• Tienen callbacks.

Page 9: WFSpain Android App - Imágenes y persistencia

CÓMO USARLOS• La Activity o Fragment debe implementar

LoaderManager.LoaderCallbacks<T>.

• Debe pedirse que se registre el Loader con getLoaderManager().initLoader(id, bundle, callback).

• onCreateLoader() debe devolver una instancia del Loader que se vaya a usar.

Page 10: WFSpain Android App - Imágenes y persistencia

CÓMO USARLOS• onLoadFinished() se encargará de actualizar la UI con

los datos cargados del Loader.

• Distintos tipos de Loaders:

• Loader.

• CursorLoader.

• AsyncTaskLoader - usado aquí.

Page 11: WFSpain Android App - Imágenes y persistencia

PERSISTENCIA:

• El 90% del contenido de la app proviene de API online.

• Es necesario garantizar la persistencia de los datos descargados y su coherencia con los dados por la API.

Page 12: WFSpain Android App - Imágenes y persistencia

PERSISTENCIA• Para ello: SQLite y llamadas a API Rest.

• Problemas:

• DB de Web no adaptada a API:

• No hay tombstones.

• No hay timestamps aprovechables.

• No hay sistema de login por tokens o similares.

• Datos muy dependientes. Un fallo en la cadena puede dejar muy tocada la app.

Page 13: WFSpain Android App - Imágenes y persistencia

MÁS PROBLEMAS

• ORM en Android está poco avanzado. Toca hacerlo a mano.

• Conexión va y viene. ¿Qué pasa si se va mientras se hace la carga inicial de datos?

Page 14: WFSpain Android App - Imágenes y persistencia
Page 15: WFSpain Android App - Imágenes y persistencia

POSIBLES SOLUCIONES

• Usar transacciones:

• db.beginTransaction()

• db.setTransactionSuccessful()

• db.endTransaction()

Page 16: WFSpain Android App - Imágenes y persistencia

POSIBLES SOLUCIONES

• Adaptar la API:

• Crear tombstones.

• Poner timestamps que reflejen actividad.

• Crear tablas que reflejen cambios.

Page 17: WFSpain Android App - Imágenes y persistencia

PERSISTENCIA + LOADERS = WIN

• Con Loaders puedes decir “quiero cargar fotógrafos”:

• El Loader resolverá si con lo que le has enviado quieres cargar locales u online.

• Puede hacer mezcla de ambos (primero descarga, luego carga de BD).

• Transparente a la Activity o Fragment que haga de presentador.

Page 18: WFSpain Android App - Imágenes y persistencia

GRACIAS ESPECIALES A:Germán Ruiz, gran persona, mejor cliente (¡y fotógrafo!).

Page 19: WFSpain Android App - Imágenes y persistencia

Gracias por vuestra atención

Sobre mí: blog.arasthel.com

@arasthel92 [email protected]