Android: oosandroid
Hemos hecho una aplicación como prueba de concepto del uso de la api de 11870 en un dispositivo android. Imaginativamente la hemos llamado oosandroid. Ha quedado más bien tosca, pero con poco trabajo más creo que podría quedar presentable. La conclusión que hemos sacado es que es un sistema fácil de usar, y una plataforma de tremendas posibilidades.
Desde la pespectiva de programador, android proporciona tres cosas: un sistema operativo, una máquina virtual y un sdk. Todo ello open source.
El sistema operativo se basa en el kernel de linux, modificado para que corra en dispositivos de recursos limitados. Android proporciona una serie de librerías que vienen integradas en el sistema. Entre ellas está SQLite. Me parece destacable que no se concibe el sistema sin un motor SQL. Otra librería interesante es WebKit, el framework sobre el que se construye Safari, el navegador de Apple. Gracias a WebKit las vistas android renderizan html y css.
Máquina virtual
En la comunidad java el aspecto más polémico ha sido el descarte de la JVM en favor de de una máquina virtual específica, la Dalvik Virtual Machine. La DVM utiliza su propio bytecode, distinto del bytecode java y, de nuevo, sus autores afirman que las diferencias con la JVM giran en torno al mejor aprovechamiento de los limitados recursos de los dispositivos en los que corre.
Cada aplicación dispone de su propia instancia de la DVM independiente de las demás aplicaciones. El aislamiento entre aplicaciones se refuerza por el hecho de que cada aplicación corre en un proceso distinto, aunque puede lanzar los threads que crea conveniente: una aplicación -> 1 proceso -> n threads.
Programación
El sistema dispone un directorio y una instancia de SQLite para cada aplicación a los que sólo ésta puede acceder. Para compartir datos entre aplicaciones se utilizan unos componentes específicos llamados content providers.
Las clases que construyen el armazón de una aplicación típica son extensiones de Activity. Una activity se corresponde a una vista. Android hace uso intenso del patrón template method, proporcionando una serie de métodos que el programador sobrescribirá para determinar el comportamiento de la activity.
Para pasar de una activity a otra o de una aplicación a otra usamos unas piezas llamadas intents. Un intent se describe en la documentación como “la descripción abstracta de una operación”. Tu aplicación puede lanzar intents que gestionará ella misma: “quiero hacer esta acción y sé cómo manejarla” o intents que gestionará el sistema: “quiero realizar esta acción pero yo no proporciono los medios para hacerlo”.
Por ejemplo, podemos querer que el usuario de nuestra aplicación seleccione una foto de la galería del teléfono. Podríamos implementar las acciones necesarias para ello, pero también podemos expresarle nuestra intención al sistema que seleccionará la aplicación adecuada que enseñarle al usuario. El sistema nos devolverá la selección hecha por el usuario.
Referencias
El web para programadores de android es muy completo. En español está la gente de and.roid.es y android-spa.com, y como introducción recomiendo ver los tres vídeos de la playlist androidology.
5 comentarios
Comments RSS
TrackBack Identifier URI
Deja un comentario

