Características de Android

41
UNIVERSIDAD DE SANTIAGO DE CHILE FACULTAD DE INGENIERÍA DEPARTAMENTO DE INGENIERÍA INFORMÁTICA ANDROID SO MARÍA CONSTANZA FLORES GONZÁLEZ JAVIER FUENTES GAETE ISMAEL VICENCIO VALENZUELA Profesor : Fernando Rannou Fuentes Ayudantes: Víctor Flores Sánchez Adolfo Díaz Morales Trabajo de investigación para el ramo de Sistemas Operativos basado en SO Android Santiago - Chile 2014

Transcript of Características de Android

Page 1: Características de Android

UNIVERSIDAD DE SANTIAGO DE CHILEFACULTAD DE INGENIERÍA

DEPARTAMENTO DE INGENIERÍA INFORMÁTICA

ANDROID SO

MARÍA CONSTANZA FLORES GONZÁLEZ

JAVIER FUENTES GAETE

ISMAEL VICENCIO VALENZUELA

Profesor : Fernando Rannou FuentesAyudantes: Víctor Flores Sánchez Adolfo Díaz Morales

Trabajo de investigación para el ramo de Sistemas Operativos basado en SO Android

Santiago - Chile2014

Page 2: Características de Android

ÍNDICES

CAPITULO 1. INTRODUCCIÓN............................................................................3

1.1 MOTIVACIONES Y ANTECEDENTES...........................................................3

1.2 OBJETIVOS........................................................................................................3

1.3 CONTENIDO DEL INFORME..........................................................................4

CAPITULO 2. HISTORIA........................................................................................5

2.1 EVOLUCIÓN DE ANDROID............................................................................6

CAPITULO 3. CARACTERÍSTICAS DE ANDROID.........................................10

CAPITULO 4. ARQUITECTURA ANDROID.....................................................13

3.1 APLICACIONES..............................................................................................13

3.2 LIBRERIAS.......................................................................................................14

3.3 FRAMEWORKS DE APLICACIONES...........................................................14

3.4 RUNTIME DE ANDROID...............................................................................15

3.5 KERNEL DE LINUX........................................................................................17

CAPITULO 5. MANEJO DE PROCESOS...........................................................18

CAPITULO 6. MANEJO DE HILOS....................................................................21

CAPITULO 7. VENTAJAS Y DESVENTAJAS DE ANDROID........................25

7.1 VENTAJAS.......................................................................................................25

7.2 DESVENTAJAS...............................................................................................26

CAPITULO 8. CONCLUSIÓN Y REFELXIONES............................................27

BIBLIOGRAFÍA............................................................................................................28

i

Page 3: Características de Android

ÍNDICE DE ILUSTRACIONES

Figura 4.1. Partes de la arquitectura del dispositivo Android........................................12

Figura 4.2. Funcionamiento de una JVM y DVM............................................................15

Figura 5.1. Diagrama de ciclo de vida de procesos o aplicaciones................................19

Figura 6.1. Representación de uso de hebras..................................................................20

ii

Page 4: Características de Android

CAPITULO 1. INTRODUCCIÓN

En el presente informe se aborda el estudio de Android. A modo general, Android es un sistema operativo enfocado a teléfonos móviles, y tablets, cuya característica principal es ser un núcleo basado en Linux, es decir, un sistema operativo libre y gratuito. Este sistema proporciona diversas interfaces que permiten desarrollar aplicaciones en el lenguaje de programación Java.

1.1 MOTIVACIONES Y ANTECEDENTES

El creciente y sostenido desarrollo del sistema Android, le ha proporcionado bastante popularidad entre las distintas empresas, como también a los usuarios con dispositivos móviles, debido a su naturaleza de código fuente abierto, ha permitido que numerosos desarrolladores puedan poner en marcha proyectos, como así, posicionarse en la llamada guerra de los smartphone.

A partir de lo visto en la cátedra de sistemas operativos, es necesario realizar una revisión de manera general de los aspectos más significativos de este sistema operativo, a base a las siguientes interrogantes: ¿Qué es Android?, ¿cuáles fueron sus inicios?, ¿qué características posee?, ¿cuál es su arquitectura?, ¿cómo funciona?, ¿cuáles son las ventajas o desventajas al utilizar este sistema operativo?.

1.2 OBJETIVOS

A continuación se presentan los objetivos generales y específicos de este trabajo.

1.2.1. Objetivo General

Realizar una revisión de los antecedentes históricos, generales y específicos del sistema operativo Android.

1.2.2. Objetivos Específicos

3

Page 5: Características de Android

Realizar una seña histórica del sistema. Definir y enumerar las características principales del sistema Android. Describir la arquitectura de Android. Enumerar ventajas y desventajas en el uso del sistema Android.

1.3 CONTENIDO DEL INFORME

Para abordar tales objetivos, este informe se ha organizado de la siguiente manera: capítulo 1 marco teórico, donde se expondrá de manera general los inicios de este sistema operativo. Capítulo 2: se enumeran y analizan las características más importantes de este sistema. Capítulo 3, arquitectura de Android: se analiza en base a qué está construido el sistema operativo Android. Capítulo 4, conclusiones, se expondrán las apreciaciones del grupo respecto al trabajo.

4

Page 6: Características de Android

CAPITULO 2. HISTORIA

Android es un sistema operativo creado en el año 2003 por la compañía Android Inc, en la cual destacan Andy Rubin, Rich Miner, Nick Sears y Chris White como sus creadores. En un principio, el mercado objetivo de Android eran la cámaras digitales, pero la compañía de rumbo al descubrir que el segmento de teléfonos inteligentes estaba dominado por Windows Mobile y el popular Symbian. Por este motivo la empresa se centró en “el desarrollo de software para teléfonos móviles“.

Todo concurrió con calma hasta que el año 2005 Google compro la compañía, donde en un proceso de 2 años, se logró en 2007 junto con la Open Handset Alliance el sistema operativo y en 2008 primer “Androide” , el HTC Dream. Este teléfono vendió más de un millón de copias en los Esatdos Unidos y cerca de 100.000 copias en el Reino Unido en apenas 6 meses. Una cifra bastante alta, considerando que el boom de los Smartphone aún estaba comenzando, por lo que su único competidor en ese momento era el iPhone.

Desde ese momento, Android ha evolucionado de forma exponencial hasta volverse casi un estándar en los fabricantes de Smartphone y Tablets.

Los nombres de cada versión de Android están relacionados con dos reglas. La primera relacionada con la correspondiente letra del alfabeto de acuerdo al número de la versión que es lanzada. La segunda relación es que todas las versión de Android tienen por nombre algún tipo de postre, excepto la versión KitKat, la cual se relaciona más con un tema de marketing que de generar identidad propia.

El logo y el nombre de Android hace alusión a la novela de Philip K. Dick ¿Sueñan los androides con ovejas eléctricas? El logotipo se llama Andy y nació de un boceto rápido que tenía como objetivo un diseño simple, sin referencias culturales ni políticas, que representara un tipo de ayudante para el hombre.

Para conocer la evolución de Android, se tiene que analizar las mejoras que introdujo cada versión frente a sus antecesores y sus rivales. Comenzamos con Android 1.0 Apple Pie hasta la última versión lanzada en la actualmente, Android 4.4.3 KitKat.

5

Page 7: Características de Android

1.4 EVOLUCIÓN DE ANDROID

ANDROID 1.0 APPLE PIE

Esta versión fue lanzada en el año 2008 junto al equipo de la coreana HTC Dream o T-Mobile G1.

La versión ANDROID 1.1 PETIT FOUR tuvo como objetivo implementar las actualizaciones automáticas del sistema.

ANDROID 1.5 CUPCAKE

Esta versión de Android se caracterizó por el lanzamiento del teclado Qwerty junto al soporte de Bluetooth para finalmente incluir el primer SDK público para todos los desarrolladores, lo que inicio el primer acercamiento directo a la comunidad y posteriormente el fuerte de Android.

Si incluye el soporte de vista horizontal o panorámica.

ANDROID 1.6 DONUT

En 2008 con la versión 1.6, se actualizo la interfaz grafica del sistema junto con la compatibilidad de pantalla de mayor tamaño, un nuevo y mejorado motor de búsqueda para contenido en línea como también local.

● Soporte VPN● Soporte pantallas WVGA● GestureBuilder● Discurso síntesis.

ANDROID 2.0/2.1 ECLAIR

Desde esta versión, comenzó el crecimiento exponencial de Android. Entre sus mejoras encontramos el soporte para pantallas de mayor tamaño, cercanas entre los 2’’ y 3,5’’ pulgadas y el soporte gratuito de gps a través de la aplicación Google Maps.

Además la incorporación de un navegador compatible con HTML 5 y mejoras en la cámara permitieron la popularización del sistema.

6

Page 8: Características de Android

● mejoras en Google Maps.● MotionEvent sobre el multi-touch.● Soporte avanzado de Hardware● Soporte Microsoft Exchange.● Las API 6 y 7 solo repararon errores de la implementación 5 y 6 respectivamente.

ANDROID 2.2 FROYO

Con la llegada de Froyo, Android dio la bienvenida junto con Google a la gama de teléfonos Nexus, los cuales incluyen una capa de la interfaz Android 100% pura, sin ninguna modificación del fabricante y con la prioridad de ser los primeros en tener la ultima versión del sistema.

El soporte de flash, el motor JavaScript V8 de Chrome y mejoras en el rendimiento del sistema, son las características internas que más destacan en esta versión. A nivel de usuario, las mejoras en la cámara, pantalla de bloqueo y la opción de grabar video en calidad 720 son las más destacadas.

Los primeros intentos de dispositivos de mayor tamaño como lo son las tablets, iniciaron con esta versión del sistema.

● Se implementa la API level 8 y el kernel Linux 2.6.32. La API incluye:● Compilación JIT.● Motor V8 en Chrome.● Servicios C2DM para Nube en Android● Anclaje USB y zona WIFI.● Adobe Flash.● Soporte para pantallas con PPI de hasta 320ppp y 4 pulgadas a 720p.

ANDROID 2.3 GINGERBREAD

Lanzado en el año 2010, GINGERBREAD supuso un cambio estético más moderno en incluye por primera vez el sistema de archivo ext4, abandonando el sistema YAFFS.

Se agregó el soporte a la tecnología NFC y siguiendo la tendencia del mercado, aumento el soporte para pantallas de mayor tamaño y resoluciones más altas.

● Las APIS incluyen:● Soporte VoIP - SIP.● Nueva interfaz gráfica.

7

Page 9: Características de Android

● Mayor precisión en el multi-touch.● Incluye por primera vez la capacidad de copiar / pegar en el sistema. ● soporte NFC, WebM, VP8 y AAC.● Sistema de archivos EXT4.

ANDROID 3.0 HONEYCOMB

Honeycomb fue la primera versión de Android enfocada a tablets.

Las APIS level 11 , 12 y 13 incluyen:

Soporte para procesadores multi-core.

Modulo FUSE en el kernel.

Aceleración por hardware.

Aplicaciones en el almacenamiento secundario.

Utilizo la versión 2.6.26 del kernel Linux.

ANDROID 4.0 ICE CREAM SANDWICH

Android 4.0 fue la revolución del sistema, en términos de rendimiento e interfaz de usuario. Y por superar por primera vez a BlackBerry en el mercado de Smartphone, posicionándose como el sistema operativo móvil más utilizado.

● Interfaz HOLO.● Desbloqueo Facial.● Bloqueo de datos en segundo plano.● Soporte WebP y Wi-Fi Direct.● Soporte pantallas QVGA.

ANDROID 4.1 / 4.2 / 4.3 JELLY BEAN

Como una mejora de la versión 4.0, esta versión de android se volvió en la mas utilizada del mundo, debido principalmente a su buen rendimiento y alta compatibilidad con el hardware.

La utilización del Project Butter mejoro el rendimiento de una forma notable junto con la compatibilidad de TRIM y el soporte OpenGL ES 3.0.

8

Page 10: Características de Android

El soporte multiusuario y multi perfil es implementado en esta versión.

● Audio USB y multicanal.● Miracast● DayDream● Tablets y Smartphone comparten la misma interfaz.● SELinux.● Soporte para HID.● OpenGL ES 3.0● Resolución 4K.

ANDROID 4.4 Kit Kat

Lanzada en 2013, es la última versión lanzada hasta la fecha. Su nombre original era Key Lime Pie, pero por un acuerdo comercial con la multinacional Nestle por parte de Google, obtuvo el nombre de Kit Kat.

Se redujo el consumo de batería y de memoria ram en un 50% en comparación con Jelly Bean e introdujo de forma parcial ART, la que promete ser la nueva Runtime de Android en reemplazo de Dalvik.

Un punto negativo de la aparición de nuevas versión, es que muchas veces no poseen compatibilidad con hardware diseñado para versiones anteriores. Si además se agrega el bajo compromiso de los fabricantes con la actualizacion del software, se genera uno de los problemas más discutidos de Android, la obsolencia programada y la fragmentación de sus terminales.

● Nueva interfaz.● Modo Inmersivo.● Soporte ZRAM.● Soporte experimental para ART.

9

Page 11: Características de Android

CAPITULO 3. CARACTERÍSTICAS DE ANDROID

Android como tal posee funcionalidades específicas aunque no todas únicas de este sistema operativo, entre la lista de funciones y características que presentan se pueden ver las siguientes:

Diseño de dispositivo: La plataforma es adaptable a pantallas de mayor resolución, VGA, biblioteca de gráficos 2D, biblioteca de gráficos 3D basada en las especificaciones de la OpenGL ES 2.0 y diseño de teléfonos tradicionales.

Almacenamiento: Posee SQLite que es una base datos livianos. Una característica interesante sobre SQLite es que varios procesos o hilos pueden acceder a la misma base de datos sin problemas, lo que provoca que varios accesos de lectura puedan ser servidos en paralelo. Un acceso de escritura sólo puede ser servido si no se está sirviendo ningún otro acceso concurrentemente. En caso contrario, el acceso de escritura falla devolviendo un código de error (o puede automáticamente reintentarse hasta que expira un tiempo de expiración configurable). Esta situación de acceso concurrente podría cambiar cuando se está trabajando con tablas temporales. Sin embargo, podría producirse un interbloqueo debido al multihilo

Conectividad: Android soporta tecnologías de conectividad: GSM/EDGE, IDEN, CDMA, EV-DO, UMTS, Bluetooth, Wi.Fi, LTE, HSDPA, HSPA+ y WiMAX. Las tecnologías anteriormente presentadas sirven como protocolos y tecnologías de comunicación, Por ejemplo EDGE permite conectividad a través de GPRS de puntos 2G y 3G.

Mensajería: SMS y MMS son formas de mensajería, incluyendo mensajería de texto y ahora la Android Cloud to Device Messaging Framework (C2DM) es parte del servicio de Push Messaging de Android.

Navegador web: El navegador web incluido en Android está basado en el motor de renderizado de código abierto WebKit, emparejado con el motor JavaScript V8 de Google

10

Page 12: Características de Android

Chrome. La API de WebKit está desarrollada en Objective-C y posibilita interactuar con un servidor web para recuperar y renderizar páginas web, descargar archivos, y administrar plugins.

Soporte multimedia: Android soporta los siguientes formatos multimedia: WebM, H.263, H.264 (en 3GP o MP4), MPEG-4 SP, AMR, AMR-WB (en un contenedor 3GP), AAC, HE-AAC (en contenedores MP4 o 3GP), MP3, MIDI, Ogg Vorbis, WAV, JPEG, PNG, GIF y BMP.

Soporte para Streaming: Streaming RTP/RTSP (3GPP PSS, ISMA), descarga progresiva de HTML. Adobe Flash Streaming (RTMP) es soportado mediante el Adobe Flash Player. Se planea el soporte de Microsoft Smooth Streaming con el port de Silverlight a Android. Adobe Flash HTTP Dynamic Streaming estará disponible mediante una actualización de Adobe Flash Player.

Soporte para hardware adicional: Android soporta cámaras de fotos, de vídeo, pantallas táctiles, GPS, acelerómetros, giroscopios, magnetómetros, sensores de proximidad y de presión, sensores de luz, gamepad, termómetro, aceleración por GPU 2D y 3D.

Entorno de desarrollo: Incluye un emulador de dispositivos, herramientas para depuración de memoria y análisis del rendimiento del software. El entorno de desarrollo integrado es Eclipse (actualmente 3.4, 3.5 o 3.6) usando el plugin de Herramientas de Desarrollo de Android.

Google Play: Google Play es un catálogo de aplicaciones gratuitas o de pago en el que pueden ser descargadas e instaladas en dispositivos Android sin la necesidad de un PC.

Multi-táctil: Android tiene soporte nativo para pantallas capacitivas con soporte multi-táctil que inicialmente hicieron su aparición en dispositivos como el HTC Hero. La funcionalidad fue originalmente desactivada a nivel de kernel (posiblemente para evitar infringir patentes de otras compañías). Más tarde, Google publicó una actualización para el Nexus One y el Motorola Droid que activa el soporte multi-táctil de forma nativa.

11

Page 13: Características de Android

Bluetooth: El soporte para A2DF y AVRCP fue agregado en la versión 1.5; el envío de archivos (OPP) y la exploración del directorio telefónico fueron agregados en la versión 2.0; y el marcado por voz junto con el envío de contactos entre teléfonos lo fueron en la versión 2.2.

Multitarea: Multitarea real de aplicaciones está disponible, es decir, las aplicaciones que no estén ejecutándose en primer plano reciben ciclos de reloj, a diferencia de otros sistemas de la competencia en la que la multitarea es congelada (Como por ejemplo iOS, en el que la multitarea se limita a servicios internos del sistema y no a aplicaciones externas)

Características basadas en voz: La búsqueda en Google a través de voz está disponible como “Entrada de Búsqueda” desde la versión inicial del sistema.

Tethering: Android soporta tethering, que permite al teléfono ser usado como un punto de acceso alámbrico o inalámbrico (todos los teléfonos desde la versión 2.2, no oficial en teléfonos con versión 1.6 o inferiores mediante aplicaciones disponibles en Google Play (por ejemplo PdaNet). Para permitir a un PC usar la conexión de datos del móvil android se podría requerir la instalación de software adicional.

Soporte de Java: Aunque la mayoría de las aplicaciones están escritas en Java, no hay una máquina virtual Java en la plataforma. El bytecode Java no es ejecutado, sino que primero se compila en un ejecutable Dalvik y corre en la Máquina Virtual Dalvik. Dalvik es una máquina virtual especializada, diseñada específicamente para Android y optimizada para dipositivos móviles que funcionan con batería y que tienen memoria y procesador limitados. El soporte para J2ME puede ser agregado mediante aplicaciones de terceros como el J2ME MIDP Runner.

12

Page 14: Características de Android

CAPITULO 4. ARQUITECTURA ANDROID

La arquitectura de Android se puede separar en 5 sectores importante, como los que se ven en la figura x.x, a los cuales nos referiremos en este informe, estos son; Las aplicaciones, los frameworks de las aplicaciones, el runtime de Android que tiene que ver con la virtualización de la máquina de Java, las librerías que posee y el núcleo o kernel del sistema operativo.

Figura 4.1. Partes de la arquitectura del dispositivo Android.

1.5 APLICACIONES

Las aplicaciones creadas con la plataforma Android incluirán datos del cliente o usuario a través de correo electrónico, calendario, programa de SMS, mapas de navegador, contactos y otros servicios mínimos. Estas aplicaciones están en formato APK, que se pueden instalar sin dificultad desde cualquier explorador de archivos en la mayoría de dispositivos.

13

Page 15: Características de Android

Todos los desarrolladores de aplicaciones tienen acceso total al código fuente usado en las aplicaciones base. Lo anterior tiene que ver con las características de este sistema operativo de ser completamente libre. Vale decir, ni para programar en este sistema ni para incluirlo en un teléfono hay que pagar nada. Y esto lo hace muy popular entre fabricantes y desarrolladores, ya que los costes para lanzar un teléfono o una aplicación son muy bajos.

El entorno de desarrollo de las aplicaciones de Android está basado en el lenguaje de programación Java, el cual cuenta con un SDK necesario para implementar funciones nativas de Android de forma más entendible para el desarrollador. En este caso no es necesario poseer conocimientos extraordinarios sobre programación en Android, sino que es este Kit de datos es el que simplifica tales funciones de programación.

1.6 LIBRERIAS

Android posee en su base de datos librerías de C/C++, Java, entre otras, que son presentadas a los desarrolladores a través de frameworks de aplicaciones Android System C library, librería de utilidades, de gráficos 3D, SQlite para almacenamiento de base de datos.

El uso de las librerías necesita de importación de datos para su correcta utilización, para ello se usa el comando reservado “import”. Ya asignado el “import” de la librería, esta permite que estén disponibles dentro del programa todas las clases y métodos que la librería incluye.

Para el uso correcto de la librería se debe:

Deben ser declaradas al inicio del programa. Antes que la clase, pero después del o los package.

El número de “import” máximo es ilimitado.

Es posible importar todas las clases de una librería mediante un asterisco (*). Ejemplo: import android.view.*

En resumen, todas las librerías de Android se pueden revisar en la siguiente página; http://developer.android.com/reference/packages.html. Donde se muestra la documentación de cada librería con los métodos e interfaces que presenta a disposición.

1.7 FRAMEWORKS DE APLICACIONES

14

Page 16: Características de Android

Esta sección también es conocida como la interfaz de usuario, en donde el desarrollador posee acceso completo a los mismos APIs del framework utilizados por las aplicaciones base. Lo anterior, es implementado dentro de la arquitectura con el fin de simplificar el uso reiterado de los componentes de las aplicaciones, es decir, cualquier aplicación puede publicar sus capacidades y cualquier otra aplicación puede luego hacer uso de esas capacidades (sujeto a reglas de seguridad del framework). Este mismo mecanismo permite que los componentes sean reemplazados o modificados por el usuario.

1.8 RUNTIME DE ANDROID

Las bibliotecas base que proporciona Android ponen para el desarrollador a mano la mayor parte de las funciones disponibles en las bibliotecas base del lenguaje Java. Cada aplicación Android corre su propio proceso, con su propia instancia de la máquina virtual Dalvik, para entender mejor este manejo de procesos se investigara más sobre este punto.

Dalvik Virtual Machine

DVM es una máquina virtual usada en entorno Android específicamente para móviles. Fue diseñada por Dan Bronstein en conjunto con otros ingenieros de Google con el propósito de simular lo que es una máquina virtual de Java (JVM), pero sin romper las reglas de licenciamiento, por lo que se dice que esta máquina no es una JVM sino que solo cumple con propósitos iguales a esta. Más aún se permite correr programas escritos en Java 5 dentro de la maquina Dalvik.

Las principales ventajas que posee la aplicación de la DVM es que genera un mejor rendimiento y menor consumo de energía esto se ve contrarrestado con la desventaja de la portabilidad que pierde. Por lo anterior se orienta a una mejor optimización de los requerimientos de memoria y permite la ejecución de varias instancias de la máquina virtual al mismo tiempo, delegando al sistema operativo el soporte de aislamiento de procesos, gestión de memoria e hilos.

Dalvik ejecuta los archivos .dex en lugar de los .class que son de la JVM de escritorio. Estos primeros son los ejecutables optimizados para dispositivos móviles y más compactos. Un problema es que no posee todas las APIs de Java SE y Java ME, esta última orientada a dispositivos móviles, PDAs y electrodomésticos, sino que implementa un subconjunto de APIs contenidas en lo que se denomina “Core Libraries”, desarrollada específicamente para Android por ingenieros de Google.

15

Page 17: Características de Android

Todas las aplicaciones .dex que son las usadas por la máquina Dalvik en Android entran en el verificador y cargador de clases.

Un método de Java pude ser interpretado directamente u optimizado y compilado a un código nativo, en este caso Android.

El retraso de la compilación para un objetivo específico de la leguaje maquina es llamado “Just-In-Time (JIT) compilation”.

Android todavía no posee un compilador JIT.

Figura 4.2. Funcionamiento de una JVM y DVM

Introduciendo ART en Android.

ART es un nuevo Runtime de Android que está empezando a ser introducido experimentalmente en la versión 4.4. Esta es una vista previa de la implementación en curso de KitKat, esta opción está disponible en Ajustes > Opciones para desarrolladores. Lo anterior con el propósito de que el desarrollador retroalimente tempranamente y se asocie al nuevo Runtime.

Sin embargo todavía no se implementa en su totalidad ya que sigue se podrían romper implementaciones de Android y las aplicaciones de externos. Es por esto que aun se trabaja con el tiempo de ejecución por defecto.

Lo anterior hace que actualmente existan 2 Runtimes el de Dalvik (libdvm.so) y el de ART (libart.so) y el usuario puede tener un arranque dual entre estas dos opciones si ambas están instaladas.

Una de las características fundamentales de ART es posee un limpiador de código al momento de instalar en el dispositivo de esta forma, cosa que Dalvik no proporciona y causa que el dispositivo se ralentice a medida que se ejecuta la aplicación varias veces.

16

Page 18: Características de Android

Otra gracia de ART es que prescinde de la necesidad de una máquina virtual o de tener que interpretar el código de las aplicaciones. Esto es posible gracias a que, mientras que Dalvik interpreta el código al tiempo que inicia la aplicación, ART trabaja en modo AOD (Ahead Of Time), lo que significa que hace una pre-compilación en el momento de instalar la aplicación, por lo que a la hora de ejecutarla, se ahorra ese trabajo de tener que ejecutar e interpretar.

A su vez, se traduce también en un ahorro de batería al no tener que hacer este proceso cada vez que abrimos una aplicación.

1.9 KERNEL DE LINUX

Android posee un kernel dependiente de Linux, este mismo basado en Unix, de software libre y de código abierto. Como ya se había nombrado, es el SO el que se preocupa de la gestión de memoria del aislamiento de procesos e hilos. Entonces este kernel se preocupa de recoger y gestionar los llamados que envían las aplicaciones y se las reenvía al hardware quien devuelve la respuesta y se las concede a las aplicaciones. Para ello el kernel posee la mayoría de los driver controladores de las funcionalidades del dispositivo. Por ejemplo, puede ser el botón de desbloqueo de pantalla o algún dispositivo de sonido que desea ejecutarse.

En resumen de lo anterior se describe el kernel como un conjunto de programas que logran conectar el hardware con el software del dispositivo, en este caso, el sistema operativo Android.

En el caso del kernel de Linux posee una característica muy importante a la hora de elegir un dispositivo con este SO, y es que posee un kernel que se encuentra separado del mismo SO, y por ende, es muy fácil realizar alguna actualización de este sin pérdida de datos del dispositivo.

17

Page 19: Características de Android

CAPITULO 5. MANEJO DE PROCESOS

El manejo de datos como procesos dentro de Android nos lleva a la ejecución de aplicaciones por separado, con esto vale decir que en SO de Android cada aplicación se ejecuta dentro de su propio proceso de Linux, que es quien nos ofrece las características del kernel. Este proceso se inicia o se crea al momento de iniciar una aplicación y se mantendrá activo durante su tiempo de vida hasta que no sea necesario en el sistema o que el sistema reclame el uso de recursos para otras aplicaciones de mayor prioridad y se los asigne a esta.

Así mismo, se dice que las aplicaciones son manejadas durante su actividad por el sistema operativo, pero basado en lo que usuario del dispositivo estime conveniente y los recursos disponibles que tenga el dispositivo. Por ejemplo un usuario puede matar un proceso o aplicación, en este caso de un juego, mediante la salida voluntario del usuario de tal entorno, vale decir cuando se aburre del juego él puede forzar la detención de la aplicación y en este caso del proceso mismo. Por otro lado si se posee una aplicación que consume muchos recursos y se ejecuta una nueva, el SO le mandará un mensaje requiriendo que esta aplicación pase a segundo plano y libere la mayor cantidad de memoria y recursos disponibles.

Un aspecto a considerar en Android es que posee una cantidad de recursos muy limitados, por lo cual, el SO se encarga mayoritariamente del manejo y gestión de las aplicaciones, más aun que el programa mismo.

La selección de procesos que produzcan muchos recursos y requieran liberar tales recursos, cuando se presente un escenario de poca batería u otro tipo de administración de recursos más importante que la actual es asignada mediante prioridad de procesos basada en la siguiente jerarquía.

Foreground Process: Es el proceso que está corriendo en primer plano en pantalla del usuario dentro del dispositivo y con la cual se está interactuando (se dice que el proceso ha llamado al método onResume( )). Lo más común es tener pocos procesos dentro de esta prioridad en el mismo instante en el sistema (a lo más 1 o 2) y estos procesos son aquellos que se eliminaran como última opción si la memoria disponible es baja. Este solo puede ser muerto si la memoria liberada por los demás procesos no es suficiente para correr aun el proceso.

18

Page 20: Características de Android

Visible Process: Es un proceso en actividad pero no en primero plano (procesos que llama al método onPause( )).Un ejemplo de este tipo de procesos puede ser la aplicación del correo electrónico en la cual damos click a algún enlace de interés y nos redirige al navegador, el cual pasaría a ser nuestro Foreground Proces y el correo nuestro Visible Porcess. Estos tipos de procesos se eliminaran cuando el sistema haya asignado recursos insuficientes para mantener los procesos de primer plano.

Service Process: Estos procesos son aquellos que corren cuando un servicio ha sido invocado y ejecutan acciones en segundo plano que pueden ser requeridas para procesos en primer plano. Por ejemplo la actualización del GPS, puede ser necesaria posteriormente para otra aplicación que requiera esos datos de localización o puede ser también el reproductor de música que solo pasa a segundo plano cuando por ejemplo usamos aplicaciones deportivas que requieran abrir este reproductor. La eliminación de estos procesos nunca ocurrirá a menos que sea necesario para mantener corriendo a los procesos Visible y Foreground.

Background Process: Es un proceso que contiene un Activity que actualmente no es visible por el usuraio y que ya no se le asigna demasiada importancia. Un ejemplo puede ser un programa ejecutado hace tiempo y que no se ha vuelto a reabrir y pasa a estar como Backgroud Process. Esto produce que cuando pasee a este estado, el sistema libere lo más posible de los recursos que han sido asignados a este recurso para tener un rendimiento más óptimo.

Empty Process: Es aquel proceso que no aloja ningún tipo de componente. Este tipo de procesos se usa regularmente para tener un cache disponible para la próxima aplicación que se ejecute. Este tipo de procesos son las más eliminados por el sistema para obtener más memoria disponible y recursos.

La ejecución normal de procesos es dada por el sistema operativo y este es el encargado de destruir, pausar o para una aplicación o proceso según las necesidades de recursos actuales del dispositivo. La figura 5.0 muestra un diagrama de como es el ciclo de vida de tales aplicaciones y procesos.

19

Page 21: Características de Android

Figura 5.1. Diagrama de ciclo de vida de procesos o aplicaciones

Como se observa los procesos pasan por estados de creación, de inicio y de reanudación antes de correr. Estas aplicaciones están almacenadas en un “activity stack” y cuando una nueva actividad es llamada esta es puesta en el “top” de la pila y comienza a correr en actividad y el proceso viejo sale del “top” y se ubica en la posición siguiente dejando de estar en el Foreground.

Después de ejecutar o correr el proceso este puede pasar a estados de pausa, detención o destrucción, este último puede ser llamado directamente después de la pausa por el término de la aplicación o puede ser solicitado por el SO para liberar recursos del sistema.

Así mismo en los estados pausados pueden volver a un estado de reanudación para seguir su ejecución y los estados, detenidos pueden reiniciarse para posteriormente pasar a ejecución.

20

Page 22: Características de Android

CAPITULO 6. MANEJO DE HILOS

El manejo de hilos dentro de Android es muy complejo ya que básicamente se crea una hebra por cada proceso y esta hebra es la que se tiene que comunicar con la demás hebras presentes dentro del proceso por esto mismo a esta hebra principal también se le cómo hebra de interfaz de usuario.

Si la aplicación realiza trabajos intensivos como el caso de alguna respuesta de interacción, esta espera una respuesta casi instantánea para seguir su ejecución y en este caso la hebra se bloquea hasta que se reciba tal respuesta en caso de que sea lanzada sobre la hebra principal. Pongámonos en el caso de que se requiera un archivo descargado desde internet, en este caso la petición requiere que el archivo a descargar sea completado para luego seguir con la ejecución normal. En el caso de que esta tarea fuese ejecutada con la hebra principal, todas las funciones de las demás hebras seguirán corriendo pero la ejecución de la hebra que realiza el trabajo de descarga, se bloqueara y no permitirá al usuario ver que realizan las demás hebras, por ejemplo la vista onDraw( ) se mantendrá estática en este periodo. Más aun, el sistema operativo después de 5 segundos de una hebra bloqueada pregunta al usuario se desea detener la aplicación, creando una falsa sensación de bloqueo dentro del proceso ejecutado.

Para poder solucionar este problema se necesita crear hebras que no bloqueen a la hebra principal de tal forma que el hilo principal pueda servir para la ejecución de otras actividades

Las herramientas del interfaz de usuario de Android han sido diseñadas para ser ejecutadas desde un único hilo de ejecución, el hilo principal. Por lo tanto no se permite manipular el interfaz de usuario desde otros hilos de ejecución.

Figura 6.1. Representación de uso de hebras

21

Page 23: Características de Android

La figura 6.0 muestra en ejemplo como se ejecutan las hebras en Android y nos muestra el procesos P que ejecuta una hebra principal y las hebras llamadas posteriormente en la ejecución de la principal. Es importante recalcar que las hebras son a nivel de kernel, ya cualquier creación de hebra es conocida para ejecutar alguna respuesta dentro del SO, pero funcionan similar al diseño de las hebras a nivel usuarios, en la cual se simulan hebras que pidan permiso a la principal que posee atribuciones sobre el kernel.

Creación de hebras con la clase Thread

Como ya se vio siempre que se quiera ejecutar un método que requiera un tiempo de ejecución largo, es necesario invocarlo desde otro hilo que no sea la hebra principal. Ya que la hebra debe estar mayoritariamente disponible para atender a los eventos generados por el usuario, por lo cual nunca debe bloquearse, a menos que se rebalsado la cantidad de recursos asignados o que la memoria usada no sea posible liberarla y se sature. A continucaion se verá la instanciación de hebras usando la clase Java.Thread, la cual es muy fácil de usar. Como se muestra a continuación.

Y para crear el nuevo hilo y ejecutarlo:

La llamada al método start() ocasionará que se cree un nuevo hilo y se ejecute el método run() en este hilo. La llamada al método start() es asíncrona. Es decir, continuaremos ejecutando las instrucciones siguientes, sin esperar a que el método run() concluya.

22

class MiThread extends Thread {

@Override

public void run() {

}

MiThread hilo = new MiThread();

hilo.start();

Page 24: Características de Android

Sincronización de Hebras

Con respecto a la sincronización de las hebras Android posee una palabra reservada para asegurar tal sincronización, por ejemplo en zonas de sección crítica y de exclusión mutua. Para asegurar que las malas prácticas de los hilos al momento de cambiar de un contexto a otro usaremos “synchronized”. Esta función debe ser llamada después de cada vez que se desea marcar un aseccion critica de datos compartidos.

En su defecto, cada vez que una hebra entra en un método o bloque de instrucciones marcado con “synchronized” se pregunta al objeto si ya hay alguna otra hebra que haya entrado en la sección crítica de ese objeto. La sección crítica está formada por todos los bloques de instrucciones marcados con “synchronized”. Si nadie ha entrado en la sección crítica, se entrará normalmente. Si ya hay otra hebra dentro, entonces la hebra actual es suspendida y ha de esperar hasta que la sección crítica quede libere. Esto ocurrirá cuando la hebra que está dentro de la sección crítica salga.

Dentro del total de la gama de métodos que existen dentro de las hebras que se crean dentro del entorno de Android podemos encontrar los siguientes.

wait(): Es el método que interrumpe a un hilo dentro de su ejecución y los bloquea. El bloque de código que se desea hacer esperar debe ir en “try-catch”. Por ejemplo un programa requiere sacar datos de una lista, pero esta se encuentra vacía, en este caso se podría bloquear la hebra hasta que la lista este con elementos.

notify(): Este método sirve para despertar los métodos bloqueados. Para el mismo caso anterior la hebra que agrega los datos a la lista debe llamar al método para despertar las hebras que puedan remover el dato.

23

synchronized(lista) {

try{

if (lista.size( ) == 0)

lista.wait( );

dato = lista.get(0);

lista.remove (0);

}

catch(Exception e){

Page 25: Características de Android

Listo, una vez que hagamos esto, el hilo que estaba bloqueado en el wait() despertará, saldrá del wait() y seguirá su código leyendo el primer dato de la lista.

Pero también hay métodos que permiten interrumpir la hebra sin necesidad de notificarla. Esto se puede hacer con el método interrupt().

24

synchronized(lista) {

lista.add(dato);

lista.notify ();

}

Page 26: Características de Android

CAPITULO 7. VENTAJAS Y DESVENTAJAS DE ANDROID

1.10 VENTAJAS

A continuación se presentaran algunas ventajas que posee el sistema operativo Android:

Código libre: el código de Android es abierto, esto significa que toda persona podrá realizar una aplicación bajo este sistema. Esto ha permitido el desarrollo de una gran cantidad de aplicaciones gratuitas disponibles para su uso, por parte de diferentes empresas, y no sólo eso, cualquier desarrollador eventualmente podrá modificar un determinado código y compartir la mejora a las personas que utilizan una determinada aplicación. En caso de un error o bug en una aplicación, será solucionada de manera más rápida, ya que no existe ningún impedimento legal para investigar y modificar el código.

A la vez, esta característica (código libre), ha permitido que no sólo existan aplicaciones para smartphone, sino que también, el desarrollo de aplicaciones he llegado a diversos dispositivos como: tablets, gps, relojes, y ordenadores.

Libertad de acción: el sistema Android permite que cualquier propietario y usuario pueda instalar lo que necesite desde Android Market. No utiliza software propietario para poder almacenar música, archivos y otros documentos; es decir, se puede utilizar directamente un cable USB para extraer información o almacenarla. Otras empresas, pueden realizar aplicaciones y complementos como Flash y ofrecerlos libremente a los usuarios.

Sin fronteras: Android está exento de cualquier asociación a empresas de telefonía que prestan servicios a los usuarios, como así de fabricantes. De esta manera, cualquier futuro usuario podrá disfrutar del sistema Android sin tener elegir un equipo por defecto (podrá elegir dentro de un marco determinado).

Costes: dado que Android no se encuentra asociado a ninguna empresa de servicios en particular, este sistema podrá ser instalado en dispositivos móviles de cualquier compañía, esto aporta una mayor gama de productos, como de precios ante el mercado competitivo. De esta manera, existe una amplia gama de precios por productos, donde las usuarios podrán elegir según sus gustos, intereses y por supuesto su capacidad adquisitiva a la hora de comprar un producto.

25

Page 27: Características de Android

Multitasking: Android permite gestionar varias aplicaciones a la vez, de este modo, suspende aquellas tareas que no se encuentran en uso, como también, cierra aquellas que poseen un período de inactividad, todo esto, con el propósito de evitar consumos innecesarios de batería.

Personalizable: el usuario podrá personalizar a su gusto, instalando fondos de pantalla, animaciones o widgets a su equipo, sin tener que aceptar una configuración por defecto.

1.11 DESVENTAJAS

A la vez, es posible encontrar las siguientes desventajas en su uso:

Multitasking: si bien se mencionó como una ventaja, gestionar varias aplicaciones a la vez trae los siguientes inconvenientes: al poseer diversas aplicaciones abiertas, el consumo de la batería aumenta de manera considerable, por otro lado, no siempre Android cierra las aplicaciones que no se encuentran en uso; es necesario para ello tener una aplicación que cierre los demás procesos.

Necesidad de instalar aplicaciones externas: a veces es necesario instalar otras aplicaciones para poder por ejemplo: eliminar aplicaciones o bien cerrar de forma definitiva los procesos corriendo.

Duración batería: dependiendo el uso que se le dé al equipo, la batería de un dispositivo de con Android tienden a durar menos cuando existen varias aplicaciones corriendo. Existen aplicaciones especializadas que tienen por objetivo optimizar el uso y duración de la batería, pero estas aun así, no solucionan el problema en sí.

Android fragmentado: el sistema operativo Android posee varias versiones dentro de las versiones oficiales existentes. Cada teléfono móvil se ha de adaptar a una determinada versión diferente, esto trae problemas con la compatibilidad de las aplicaciones y el equipo, ya que el usuario no puede elegir una aplicación cualquiera si no es compatible con la versión de su dispositivo.

26

Page 28: Características de Android

CAPITULO 8. CONCLUSIÓN Y REFELXIONES

Según lo estudiado e investigado respecto al sistema operativo Android, es importante mencionar el gran auge que ha tenido desde que Google compró la compañía hasta ahora ha sido innegable. Android, en el desarrollo de los equipos móviles, tablet y otros ordenadores, ha permitido acercar al público a adquirir diferentes tipos productos, aportando a los usuarios, comodidad, conocimientos y servicios de calidad. Juega un rol importante en el mercado, ya que obliga a las demás competencias innovar y captar la atención del público, esto hace, finalmente que ninguna empresa o compañía logre monopolizar el mercado.

Respecto a características técnicas de este sistema operativo, permite atraer a personas interesadas en el desarrollo de aplicaciones, de esta manera, diferentes proyectos pueden salir a la luz, debido al libre acceso al código. Es importante destacar, la creación de una especie de comunidad, donde diversas empresas, personas poseen la posibilidad de innovar, crear nuevos y mejores servicios a las personas, como también dar soporte y solución a los problemas que surgen.

27

Page 29: Características de Android

BIBLIOGRAFÍA

Android. (20 de 5 de 2014). http://developer.android.com/. Recuperado el 27 de 5 de 2014, de Android for Developers: http://developer.android.com/reference/packages.html

code, g. (- de - de 2010). http://tailieuandroid.googlecode.com. Recuperado el 27 de 5 de 2014, de Tailieu Android: http://tailieuandroid.googlecode.com/svn/!svn/bc/8/trunk/

Coello, S. (13 de 11 de 2013). http://scoello12.wordpress.com. Recuperado el 5 de 27 de 2014, de SISTEMA ANDROID: http://scoello12.wordpress.com/caracteristicas/

Condesa. (6 de 6 de 2011). http://androideity.com. Recuperado el 27 de 5 de 2014, de Procesos en Android: http://androideity.com/2011/07/06/procesos-en-android/

Developers, A. (- de - de -). Android Open Source Project. Recuperado el 27 de 5 de 2014, de http://source.android.com/: http://source.android.com/

Gonzalez, A. N. (8 de 2 de 2011). www.xatakandriod.com. Recuperado el 27 de 5 de 2014, de ¿Qué es Android?: http://www.xatakandroid.com/sistema-operativo/que-es-android

Pastor, J. (18 de 2 de 2014). http://www.xataka.com. Recuperado el 27 de 5 de 2014, de Qué es Android, qué es AOSP, qué es libre y abierto y qué no: http://www.xataka.com/moviles/que-es-android-que-es-aosp-que-es-libre-y-abierto-y-que-no

Valencia, U. P. (- de - de 2011). http://www.androidcurso.com. Recuperado el 27 de 5 de 2014, de Hilos de ejecución en Android: http://www.androidcurso.com/index.php/recursos-didacticos/tutoriales-android/36-unidad-5-entradas-en-android-teclado-pantalla-tactil-y-sensores/271-hilos-de-ejecucion-en-android

Vilchez, A. (2 de 4 de 2009). http://www.configurarequipos.com/. Recuperado el 27 de 5 de 2014, de Que es Android: Características y Aplicaciones: http://www.configurarequipos.com/doc1107.html

28