sábado 19 de julio de 2008

PROGRAMACIÓN EN ANDROID(V) INTERFACE GRÁFICA EN ANDROID

En esta entrada, vamos a introducirnos en la interface gráfica de la plataforma Android. Aquí, vamos a revisar un poco del por que del XML, y como se estructura dentro de un proyecto Android la definición gráfica.

INTERFACE GRÁFICA
Empiezo mencionando que la interface gráfica en Android, la manejas con XML, aquí hago un corte necesario; recuerdo que una interface gráfica en Java siempre demandaba muchos recursos de memoria.
Cuando java inició con AWT, raro nombre para una interface gráfica(Abstract Window Toolkit), poseía controles básicos para interactuar con el usuario, lo mismo sucedió con el API Swing de java que lo mejoró notablemente; ya habrá oportunidad de explorar el pasado de las intefaces gráficas de java, sin embargo los menciono, por que ambos tienen algo en común...el uso en exceso del recurso mas preciado para un computador...La memoria.

Cuando pensamos en desarrollar aplicaciones para dispositivos móviles, la memoria, es justo el elemento más escaso. Y si Android se desarrolló en Java, pues habría que idear la forma de contar con una interface gráfica que no consuma muchos recursos.

Además está el tema de la complejidad de desarrollo; cuando desarrollas en java con interface gráfica, lograr la creación y la mayoría de los eventos sean controlados para cada uno de los controles(Valga la redundancia...objetos de la GUI de Java) es un tallarín de código que debes ingresar, y este es un punto a favor muy valedero para hacerlo mejor en XML.

LAYOUTS EN ANDROID

Si estas trabajando con Eclipse, debrás empezar por la estructura de los proyectos en Android. Como ves en la gráfica, Un proyecto tiene algunas carpetas importantes como: Bin(Binarios), Res(Recursos), Src(Fuente).
En esta entrada nos enfocaremos en el contenido de Res(Recursos). Aqui encontraremos los pricipales recursos del proyecto, como pantallas, iconos, gráficos, y las referencias a estos elementos dentro de una plicación Android(Strings.XML dentro de la carpeta Values)

En la carpeta Layout, estarán todas las pantallas, incluyendo la pantalla principal de la aplicación, por ejemplo, cuando realizas un programa en Android, utilizando eclipse, automáticamente aparece en la carpeta Layouts, main.xml, que es la pantalla principal por default, claro que tu puedes cambiar esto o añadir nuevas pantallas.

Todas y cada una de las pantallas deberán estar en un archivo XML dentro de la carpeta Layouts. Y las referencias Todas y cada una deberán estar situadas dentro de string.xml que se ubica en la carpeta Values. en la próxima entrada haremos un programa ejemplo y cubriremos la estructura de los Layouts y String.

lunes 14 de julio de 2008

PROGRAMACIÓN EN ANDROID (IV) EL CICLO DE VIDA DE UNA APLICACIÓN ANDROID

Es necesario entender, que el ciclo de vida de una aplicación Android, es un proceso (por lo general una aplicación que corre en su propio proceso Linux), que no está directamente controlado por la aplicación misma, al contrario, esto está determinado por el sistema, a través de una combinación de partes de la aplicación que el sistema reconoce que está en ejecución.

Es por esto, que es importante conocer como los principales componentes de una aplicación (ver Estructura de una Aplicación Android) impactan en el ciclo de vida del proceso de la misma.

Para determinar que procesos se pueden ir eliminando de la memoria, Android los ubica en prioridad jerárquica basado en los componentes que están ejecutándose y el estado en que están:

1 Procesos Foreground: Básicamente, es el proceso de ejecución actual.
2 Procesos Visibles: Es el que manejando una Actividad, y es visible para el usuario en pantalla, pero no está en foreground (el método onPause() ha sido invocado)
3 Procesos de Servicio: Es el que ha sido iniciado con el método startService()
4 Procesos Background: Es el que mantiene una actividad que no está siendo visible por el usuario (se ha invocado el métdo onStop()), estos procesos no tienen un impacto directo en la experiencia del usuario con la aplicación.
5 Procesos Vacíos: es el que no está siendo manejado por alguna aplicación activa.

PROGRAMACIÓN EN ANDROID (III) ESTRUCTURA DE UNA APLICACIÓN ANDROID

En esta entrada, vamos a ir detallando dos cosas principalmente; como es la estructura de una aplicación en Android, y como es su ciclo de vida, para lo cual, vamos a introducirnos en los conceptos fundamentales de esta plataforma.

La mayor parte de la información conceptual que vas a leer, la he sacado principalmente, de la documentación Android, y otro poco, de otros autores. He tratado de reducir y resumir los conceptos, de manera, que puedan ser asimilados de una mejor forma.

Empiezo con los bloques principales que conforman una aplicación Android, y son los siguientes:

Activity (Actividad)
Intents (Receptores y gestores de eventos)
Services (Códigos no asociados a una UI)
Content (Contenido)

Una aplicación Android podría estar conformada por lo menos por una actividad (Activity), que no es otra cosa, que una pantalla que se muestra al usuario por medio de una vista (View) y responderá a eventos.

En cuanto al Intent, podemos decir que es una clase que permite interactuar entre múltiples pantallas, y sus partes mas importantes son la acción y la data. Las acciones principales de esta clase son: MAIN, EDIT, VIEW, PICK, ect y la data está expresada como un URI. Por ejemplo, si se desea observar la información de un contacto en tu móvil, la acción sería VIEW, y su URI el nombre de la persona.

Existe una clase relacionada y es IntentFilter, que no es más que una descripción de que Intents dentro de una actividad, es capaz de manejar la acción. Y dentro de la clasificación de los Intents, encontramos finalmente a los IntentReceivers, que los puedes utilizar en una aplicación, cuando desees controlar un evento externo, como por ejemplo, una timbrado telefónico.

Con el Content Provider, una aplicación Android, puede almacenar sus datos en archivos, una base de datos como SQLite, o algunos otros mecanismos. Sin embargo, un Content Provider generalmente es usado, si deseas que tu data sea compartida con otras aplicaciones.

PROGRAMACIÓN EN ANDROID (II) INTRODUCCIÓN A LA PROGRAMACIÓN

Siempre que hay una nueva herramienta de desarrollo atractiva y futurista para trabajar en su ambiente, se nos crea en la mente las primeras inquietudes con respecto al material que existe documentado sobre la misma.

En muchas ocasiones encontramos, o tratamos de encontrar material completo y confiable que nos ayude a entender los lineamientos de la herramienta, la descripción de todos sus componentes, y API’s que permiten y brindan su potencialidad. Pero nos resulta a veces difícil de encontrar información de las primeras nociones, que nosotros llamamos “Conceptos Fundamentales”, y que para empezar a conocer y trabajar en un nuevo entorno de desarrollo, es primordial y básico.

Lo anterior, puede darse, en ocasiones por que tal vez resulte obvio, pero cuando nos introducimos ya en la labor de trabajo de escritorio, es decir, “sentarse a desarrollar”, podemos encontrarnos con errores de fundamento, que en muchas ocasiones nos han dado vueltas y vueltas en nuestra cabeza, y no encontramos alguna solución digna de nuestro orgullo como programadores “expertos”

Y menciono “Expertos” puesto que para algunos como yo, llevamos ya algunos años desarrollando aplicaciones con diversas plataformas y en diversos entornos, pero, y aquí viene el Pero..., cada plataforma, viene con nuevos conceptos, que se crean bajo el objetivo cierto de mejorar el flujo de los procesos en memoria(Gestión de memoria), como es el caso de Android, y muchos otros cambios para mejorar e interactuar con el hardware, y su rendimiento en general; y eso, no lo sabemos nosotros en primera instancia.

La clave está en conocer y reconocer como funcionan esos cambios implementados en la herramienta y entender como el código, las clases, los métodos funciona bajo esos “Conceptos Fundamentales”, es justamente, este aprendizaje preliminar, el que vas a encontrar aquí, y me he enfocado en cubrir aquellos errores comunes de aprendizaje, por que es bueno aprender de los errores que cometemos, pero mas valioso aún, es aprender de los errores ajenos.

En las siguientes entradas verás información que cubre los “Conceptos Fundamentales” de Android y un barrido por las clases más importantes que componen esta herramienta de desarrollo para móviles con valiosos códigos de ejemplo.