Android
Introducción a android
- Sistema operativo basado en el kernel de Linux
- Creado por google.
- Código abierto.
Retos de desarrollo en android
- Disponibilidad.
- Las plataformas a las cuales queremos llegar.
- Fragmentación de dispositivos.
- Versionamiento de sistemas operativos.
- DPIs de las pantallas.
- Rendimiento.
- Consumo del CPU y uso de memoria.
- Calidad.
- La aplicación haga lo que dice que hace.
- Debemos de conocer bien el sistema operativo para evitar sorpresas.
- Métricas de diseño.
- Workflow.
- Testing.
Tipos de dispositivos Android y soporte
- Compatibilidad
- Compatibilidad con el dispositivo.
- Hay mucha variedad de hardware.
- Características de hardware.
- Versión de android.
- Configuración de pantalla.
- Compatibilidad con la aplicación.
- Debemos especificar dos versiones de API con la aplicación.
minSdkVersion- La versión mínima de android que soportaremos.
targetSdKVersion- La versión objetivo de android que queremos soportar.
- Compatibilidad con el dispositivo.
Componentes de una aplicación
Activity
- Es una pantalla de una aplicación.
- Se compone de:
- Es una clase de java que herede de la clase
activity. - El
layout(La Interfaz gráfica).
- Es una clase de java que herede de la clase
- Ciclo de vida de una actividad.
- La actividad es creada con el método
onCreate().- Recibe el estado de la actividad anterior como estado.
- De tipo
Bundle.
- De tipo
- Recibe el estado de la actividad anterior como estado.
- Pasamos al estado
Startedcon el métodoonStart().- Esto es cuando la actividad está por ser mostrada.
- Llegamos al estado
Resumedcon el métodoonResume().- Esto es cuando la actividad ya es visible.
- Podemos llegar a un estado
Pausedcon el métodoonPause().- En este estado otra actividad tiene el focus de la aplicación.
- Podemos llegar al estado
Stoppedcon el métodoonStop().- La actividad ya no es visible.
- Esto pasa cuando por ejemplo presionamos el botón de home.
- Podemos regresar de este estado a
Startedcon el métodoonRestart()
- Al final llegamos a el estado
Destroyedcon el métodoonDestroy()- Esto pasa cuando por ejemplo presionamos el botón de back en el dispositivo.
- La actividad es creada con el método
Fragments
- Todas las aplicaciones tiene una barra inferior o una barra superior.
- Funcionan a partir de un concepto llamado
fragments.- Son un tipo de contenedor que tienen una parte de la FUI.
- Usamos ciertas clases para manejarlos.
FragmentManager- Manejar los
fragments - Junto con nuestra librería de soporte.
- Manejar los
Transacciones- Todas las acciones que podemos realizar con los
fragments
- Todas las acciones que podemos realizar con los
Commits- Cada que se hace una transacción, se hace un
commit
- Cada que se hace una transacción, se hace un
- Funcionan a partir de un concepto llamado
Intent
- Es muy común tener un flujo de navegación o de ventanas en una
aplicación.
- Es decir, más de una
activityconectadas entre si.
- Es decir, más de una
- los
Intentnos ayudan a unir los componentes de una aplicación. - Podemos tener dos casos:
- Unir varios
activity.- Estos son
intentexplícitos.
- Estos son
- Unir
activitysque viven en diferentes aplicaciones.intentimplícitos.
- Unir varios
- Todos los componentes de android están aislados.
- Con los
intentpermitimos la comunicación entre diferentes partes de una apeo.
- Con los
Services
- Los servicios nos permiten hacer cosas cuando la aplicación no esta
corriendo.
- O para ejecutar tareas en segundo plano.
- Se arrancan a partir de las
activity. - Se crean con el método
onStartCommand(). - Tipos de servicios:
- En primer plano:
- Es un servicio que realiza una tarea que el usuario puede notar.
- Estos continúan ejecutándose incluso si el usuario deja de interactuar con la aplicación.
- En segundo plano:
- Este realiza una tarea que el usuario no nota directamente.
- Son servicios en segundo plano.
- Enlace (
Bind)- Podemos enlazar un servicio con
onBind()y des enlazarlo cononUnbind(). - Un servicio es de enlace cuando un componente de la app se vincula
a el con el método
bindService() - Este ofrece una interfaz cliente-servidor que permite que los
componentes interactúen con el servicio.
- Permitiendo comunicación con distintos procesos (IPC).
- Este solo se ejecuta mientras otro componente de la app este enlazado a el.
- Podemos enlazar un servicio con
- En primer plano:
Broadcast
- Transmisiones.
- Conocidos también como
broadcast receivers - Estos están siempre alerta a lo que pasa en el sistema operativo.
- archivo
Android Manifest- Tiene declarado todo lo que tenga que ver con el sistema operativo.
- La capa que tiene contacto con el dispositivo.
- Si quiero que mi app tenga acceso a algo, el tiene que estar declarado aquí.
- Es el puente entre tu aplicación y el hardware.
- Aquí se definen los
broadcast.- Aquí ponemos escuchas para diferentes eventos del dispositivo.
- EJ: batería baja, Llamada entrante, Carga conectada, etc.
- Aquí ponemos escuchas para diferentes eventos del dispositivo.
- Debemos heredar de la clase
broadcastReceiver.
Desarrollo
Qué es y como funciona gradle
- Es una herramienta que facilita la construcción de aplicaciones.
- Genera el sistema de archivos del proyecto.
- Gestiona dependencias.
- Genera archivos ejecutables.
- Esta basado en el lenguaje
groovy.- Es un lenguaje de dominio (un lenguaje diseñado para usarlo en un solo ámbito).
- archivo
build.gradle- Dependencias del proyecto.
- Compilación del código.
- Empaquetado.
Generación de un APK
- El compilador convierte el código a bytecode.
- Este bytecode es diferente al que podrías encontrarte para java.
- Tiene la extensión
.dexen lugar de ser.jar.
- Tiene la extensión
- Este bytecode es diferente al que podrías encontrarte para java.
- Gradle empaqueta los archivos
.dexjunto con todos los otros archivos que tu aplicación necesita.- Generando con esto un
.apk.
- Generando con esto un
- Gradle Firma este APK on una
key. - Los APK generados pueden ser de
debugo derelease.
Google Play Services
- Google proporciona servicios como autentificación o analíticas.
- Para esto ocupamos los servicios de google play.
Almacenamiento
Niveles de almacenamiento y tipos
- Almacenamiento Interno.
- Almacenamiento Externo.
Shared preferences.- Modelo de datos primitivos con formato xml.
- Vive en la APK.
- Bases de datos
- Se pueden guardar dentro de la APK o dentro del almacenamiento.
WebService.- Guardas datos en un servidor externo mediante internet.
File y shared preferences
- File
- Crea un archivo de cualquier tipo.
- Trabaja con la clase
file.
Shared Preferences- Datos sencillos.
- Funciona con XML.
- Necesitamos una
keyy un valor.- En forma de pares.
- Se almacena dentro de la aplicación.
Content Providers, Bases de datos y Network
- Las bases de datos se utilizan con
sqlite.- Estos datos viven hasta que la aplicación es desinstalada.
- Solo son accesibles para la aplicación.
Content providers.- Almacenamiento que pueden usar todas las apps.
- Funcionan como una base de datos.
- La aplicación de contactos funciona con esto.
Network- Usamos una conexión a internet.
- Mandamos los datos a un servidor remoto.
- Siempre debe de estar conectado para tener persistencia.
Testing y UI Test
- El
testinges necesario para asegurar la calidad de tu aplicación. - Hay diferentes tipos de pruebas:
- Pruebas de unidad local (unitarias).
- Son pequeños
testsautomatizados para probar pequeñas partes del código.
- Son pequeños
- Pruebas instrumentadas.
- Son pruebas donde integras los test anteriores.
- Aquí testeamos que varios módulos funcionen bien en conjunto.
- Pruebas de interfaz de usuario.
- Se enfocan en el flujo de la interfaz de usuario.
- Con esto nos aseguramos que las tareas que realizará el usuario funcionen como se esperan.
- Pruebas de unidad local (unitarias).