Вы находитесь на странице: 1из 36

Arquitectura

Android
ING. CARLOS CHÁVEZ ZAPATA
¿Qué es eso?
Estructura en capas

El sistema operativo Android está conformado por una estructura


software dividida en diversos niveles. Cada capa de esta arquitectura
proporciona servicios a su capa inmediatamente superior.
Capas de la Arquitectura

 Núcleo Linux: Todo el sistma Android se construye sobre un núcleo


Linux personalizado por Google. Este nivel se encarga de
interactuar con el HW, proporcionando los controladores
necesarios. Además actúa como capa de abstracción entre el HW
y el resto de capas de SW de la Arquitectura.
Capas de la Arquitectura

 Librerías y Android Runtime: La siguientes capa corresponde a las


librerías nativas de Android, en lenguaje C/C++. Al mismo nivel se
encuentra la capa de ejecución denominada Android Runtime,
que consta de la máquina virtual Dalvik*, encargada de ejecutar
las aplicaciones, y un conjunto de libterías Java
Capas de la Arquitectura

 Marco de Aplicación: por encima de los niveles de librerías y


ejecución se encuentra la capa marco de aplicación o Framework.
Esta capa gestiona funciones básicas del dispositivo y proporciona
las herramientas sobre las que se construyen las aplicaciones
Capas de la Arquitectura

 Aplicaciones: esta es la capa superior de la arquitectura Android.


Incluye todas las aplicaciones desde las incorporadas por defecto
en Android como las desarrolladas por terceros e instaladas por el
usuario
Kernel Linux

 En la base tenemos el kernel 2.6 de Linux, Android lo utiliza por su


rebustez demostrada y por la implementación de funciones básicas
para cualquier SO, por ejemplo: seguridad, administración de
memoria y procesos, implementación de conectividad de red
(network stack) y varios interpretes (drivers) para comunicación con
los dispositivos físicos (HW)
Kernel Linux
Kernel Linux

 Android utiliza como base el kernel de Linux pero los dos sistemas no
son lo mismo, Android no cuenta con un sistema nativo de
ventanas de Linux ni tiene soporte para glibc (librería estándar de
C) ni tampoco es posible utilizar la mayoría de aplicaciones de GNU
de Linux
Kernel Linux

 Además de todo lo ya implementado en el kernel de Linux, Android


agrega algunas cosas específicas para plataformas móviles como
la comunicación entre procesos (lograda a través del binder), la
forma de manejar la memoria compartida (ashmem) y la
administración de energía (con wakelocks).
Librerías y ejecución

 Sobre el kernel, tenemos un conjunto de librerías de C y C++


utilizadas por el sistema para varios fines como el manejo de la
pantalla (suface manager), mapas de bits y tipos de letra (Free
type), gráficas en 2D y 3D (SGL y OpenGL), manejo de multimedia
(Media Framework), almacenamiento de datos (SQLite) y un motor
para las vistas web y el navegador (WebKit)
Librerias y ejecución

 Junto a estas librerías, encontramos lo necesario para la ejecución


de las aplicaciones a través de a máquina virtual Dalvik. Cada
aplicación utiliza una instancia de la máquina virtual ejecutando un
archivo DEX (Dalvik Executable) y el sistema está optimizado para
que se ejecuten múltiples instancias de la máquina virtual. Se
desarrolla en Java pero no se utiliza una máquina virtual de Sun
para su ejecución ni tampoco archivos CLASS
Librerias y ejecución
Librerias y ejecución

Esta capa es la que nos interesa, proporciona los bloques de


construcción que se utiliza para crear aplicaciones. Las partes más
interesantes de esta capa son los siguientes:

• Activity Manager: Este controla el ciclo de vida de aplicaciones y


mantiene un "Backstack" para que el usuario pueda utilizar otras
aplicaciones mientras otras siguen ejecutandose.

• Content providers: Estos objetos encapsular los datos que hay que
compartidos entre las aplicaciones, como los contactos.
Estructura de Aplicaciones

• Resource Manager: Los recursos son algo que va con su programa


que no es código

• Location Manager: Android siempre sabe tu localización.

• Notification manager: Eventos como mensajes recibidos, citas,


alertas de proximidad, las invasiones exóticas, y más se pueden
presentar en una manera discreta para el usuario.

Aunque tampoco hay que olvidar la gestión de llamadas, gestor de


paquetes y el gestor de pantallas.
Appication Framework
Aplicaciones

 Las aplicaciones centrales que incluye por defecto son: teléfono,


navegador, manejo de contactos, etc. En esta capa de la
arquitectura es donde trabajamos desarrollando aplicaciones
Bloques básicos de una aplicación

Una vez vista la arquitectura, empezaremos con lo fundamental para


desarrolla una aplicación. Los componentes básicos de una
aplicación son:
Activities
Intents
Views,
Services,
Content providers
Broadcast receivers
Bloques básicos de una aplicación
Activities

 Son componentes de la interfaz que corresponde a una pantalla.


Podemos visualizarlo como un mazo de cartas en el que tenemos
varias cartas pero solamente una está hasta arriba.
 Una aplicación para una lista de cosas por hacer (remember the
milk) puede tener una actividad para ingresar las cosas por hacer y
otra actividad para mostrar el listado, en conjunto estas actividades
conforman la aplicación
Activities

Activity es un elemento sobre el que se construye la aplicación y que


tiene un ciclo de vida bastante complejo. Estas Activities son pantallas
de la aplicación, en las que podemos cargar elementos de la interfaz
de usuario y capturar eventos. También son los puntos entrantes de la
aplicación y puede haber más de una Activity por proyecto.
Pongamos un ejemplo para que se vea más claro.
Supongamos que tenemos una aplicación de gestión de emails. Esta
aplicación, tendrá 2 pantallas, una en la que podremos ver nuestros
correos entrantes, y otra en la que podremos escribir nuestro correo
para enviarlo. Cada una de estas pantallas es una Activity ya que
tiene funcionalidades diferentes.
Bueno, espero que haya quedado un poco más claro, de todas
formas, estos términos irán apareciendo en los próximos tutoriales, así
que ya os iréis acostumbrando a escucharlos y manejarlos.
Activities

Según la documentación de Google, una Activity es una cosa única


con un objetivo determinado que el usuario puede hacer. Esta es una
definición abstracta. Podemos concretar más la definición diciendo
que una Activity (es decir, una clase de nuestra aplicación que
hereda de la clase Activity) se presenta al usuario como una ventana.
Esta clase crea una ventana que muestra una interfaz de usuario, la
cual está definida a su vez en una instancia de otra clase, la clase
View.
Activities

Cuando se ejecuta una aplicación Android lo primero que se muestra


al usuario es la ventana definida por la actividad que esté marcada
en el AndroidManifest.xml como principal. Las actividades se
gestionan como una pila, así que desde una actividad se puede
llamar a otra, y cuando esta finaliza se retorna a la actividad inicial.

Una actividad puede estar ejecutándose, en pausa o detenida.


Simplificando, está en ejecución cuando es visible e interacciona con
el usuario, está en pausa cuando es visible pero otra ventana,
transparente o que no ocupe toda la pantalla, tiene el foco, y está
detenida cuando no es visible. En todos estos casos la clase mantiene
su información.
Activities

En la documentación
encontramos un gráfico que
ilustra el ciclo de vida de una
actividad:
Aunque no es necesario
entender de momento todos los
detalles de este gráfico, en él se
ven los estados por los que
puede pasar una actividad (los
óvalos coloreados) y los eventos
que se disparan en dichos
estados (los rectángulos grises):
Activities

Cuando se crea una actividad, se invoca el evento onCreate(). Este


evento sólo se invoca la primera vez que se llama a una actividad, o
bien cuando se llama después de que el sistema haya tenido que
eliminarla por falta de recursos (más sobre esto en próximos artículos).
onStart() es el evento invocado cuando cada vez que la actividad se
muestra al usuario. Es decir, la primera vez que se muestra, y las veces
que en las que vuelve a aparecer tras haber estado oculta. En este
último caso, se invoca onStop() al desaparecer y onRestart()
inmediatamente antes de reaparecer.
Activities

onFreeze() y onPause() son llamadas secuencialmente cuando otra


actividad va a pasar en encargarse de la interacción con el usuario.
Tras onPause() la actividad permanece en un estado de espera en el
que puede ocurrir que la aplicación sea destruida, por lo que estos
eventos se usan para consolidar la información que no queremos que
se pierda. Si la actividad no se destruye volverá al primer plano con el
evento onResume().
La idea importante con la que quedarse es que una actividad que
esté pausada o detenida (tras onPause() u onStop()) puede ser
destruida por el sistema si previo aviso, por lo que deberemos
encargarnos de guardar antes la información necesaria (durante
onFreeze() y onPause()).
Intents

Son mensajes que provocan notificaciones o cambios de estatus, que


al ser recibidos por actividades o servicios pueden levantar procesos.
De esta forma se unen componentes dentro de la misma aplicación o
de diferentes aplicaciones.
Intents

Una intención es un mensaje simple objeto que representa una


"intención" de hacer algo. Por ejemplo, si su aplicación necesita para
mostrar una página web, expresa su "intención" para ver la URI de
Intención mediante la creación de una instancia y que la entrega
fuera del sistema. El sistema detecta algún otro fragmento de código
(en este caso, el navegador) que sabe cómo manejar esa intención, y
lo ejecuta. Intenta también se puede utilizar para transmitir eventos
interesantes (por ejemplo, una notificación) en todo el sistema.
Views

 Una visión es un objeto que sabe cómo aparecer en pantalla. Se


usa cuando necesitas crear algún gráfico diferente a los que
vienen con el SDK.
 Son los componentes de la interfaz de usuario, diferentes vistas
pueden agruparse a través de grupos logrando una jerarquía, esto
se logra a través de la disposición de los componentes a través de
un archivo XML
Services

Un servicio es un conjunto de código que se ejecuta en segundo


plano.
Son componentes que ejecutan operaciones en segundo plano y no
tienen una interfaz de usuario. Por ejemplo, al escuchar música, hay
un servicio encargado de la reproducción que se ejecuta de fondo y
la aplicación que manipulamos le manda mensajes a este servicio
diciéndole que se detenga, pause o reproduzca la siguiente canción.
Content Providers

Representan la abstracción para almacenar y obtener datos


permanentes y aplicaciones diferentes. El sistema incluye algunos
proveedores de contenido útiles (audio, video, etc) y además pueden
desarrollarse nuevos.
Content Providers

Un ContentProvider es un almacén de datos que proporciona acceso


a los datos en el dispositivo. La aplicación puede tener acceso a
datos de otras aplicaciones que tienen creado su ContentProvider.

Hay que tener claro los tipos de bloques,y su función para poder
usarlos cuando sean necesarios en la aplicación.
Manifest

El archivo AndroidManifest.xml es donde se configura la aplicación, se


agregan actividades, se asignan permisos, etc.
Broadcast Receivers

Son componentes que responden a avisos y anuncios de difusión


(broadcast). Estos avisos provienen del sistema (batería baja, una
llamada entrante, etc) y de aplicaciones (pasando avisos de una
aplicación a otra). Aun que no muestran una interfaz de usuario
algunas veces utilizan barras de progreso para mostrar avances. Estos
se activan a través de mensajes asincrónicos llamados intents
(mencionados arriba).

Вам также может понравиться