domingo, 30 de diciembre de 2007

Desarrollando aplicaciones - Bloques de construcción de Android

Documento original: Android Building Blocks

Bloques de construcción de Android

[Título original: Android Building Blocks]

Puedes ver una aplicación Android como una colección de componentes de varios tipos. Estos componentes en su mayoría tienen un bajo nivel de acloplamiento entre ellos, a tal grado que te permiten describirlos de manera muy precisa como una federación de componentes más que un aplicación como un todo.

Por lo general, todos estos componentes corren en el mismo proceso del sistema. Es posible (y muy común) crear múltiples "thread"s dentro de tal proceso, y además es posible crear procesos hijos completamente separados del proceso padre, si es que tú lo llegaras a necesitar. Estos últimos casos son poco comunes ya que Android trata en lo posible de hacer los procesos lo más transparente en tu código.

Estas son las partes más importantes de las APIs de Android:

  • AndroidManifest.xml : El archivo "AndroidManifest.xml" es el archivo de control que le dice al sistema qué es lo que debe hacer con los componentes de más alto nivel que tú haz creado (específicamente "Actividad", "Servicio", "Receptor de Intentos" y "Proveedor de Contenidos" descritos a continuación). Debido a esto, este archivo es considerado el "pegamento" que indica qué "Intent" serán recibidos por tus "Activity.

  • Actividad : Una "Activity" es, fundamentalmente, un objeto que tiene un ciclo de vida. Una "Activity" es un trozo de código que hace algún trabajo. Si fuera necesario, este trabajo puede incluir el despliegue de una UI al usuario. Sin embargo, lo anterior no es necesario y algunas "Activity" nunca despliegan una UI. Típicamente, tú designarás una de las "Activity" de tu aplicación como el punto de inicio de tu aplicación.

  • Vista : Una "View" es un objeto que sabe cómo dibujarse asimismo en la pantalla. Las interfaces de usuario de Android están conforman un árbol de "View". Si tú quieres realizar algún tipo de técnica gráfica especial entonces deberás crear una "View" (este es el caso en el cual tú quisieras crear un juego o construir un nuevo tipo de interface de usuario)

  • Intento : Un "Intent" es un simple mensaje que representa "la intención" de hacer algo. Por ejemplo, si tu aplicación quiere abrir una página web, debe expresar su "Intento" para ver la URI a través de la creación de una instancia de "Intent" y luego entregársela al sistema. Posteriormente, el sistema ubicará una pieza de código que sepa cómo manipular aquel "Intento" y la ejecuta (en este caso un browser). Los "Intent" también pueden ser usados para difundir eventos interesantes a través de todo el sistema (tales como notificaciones).

  • Servicio : Un "Service" es un cuerpo de código que se ejecuta en segundo plano. Se ejecuta dentro de su propio proceso o en el contexto del proceso de otra aplicación, dependiendo de sus necesidades. Otros componentes se "atan" a un "Servicio" e invocan sus métodos a través de "llamados remotos de procedimientos (RPC)". Un ejemplo de un "Service" es un reproductos de música. En este caso, el usuario podría usar una UI para seleccionar la música y posteriormente cerrar la UI, pero la música deberá continuar sonando. Esto se logra usando un "Servicio" que continuará la reproducción de la música.

  • Notificación : Una notificación es un pequeño ícono que aparece en la barra de estado. Los usuarios pueden interactuar con este ícono para recibir información. Las notificaciones más conocidas son los mensajes SMS, correo de voz; pero las aplicaciones pueden crear sus propias notificaciones. Las notificaciones son el mecanismo preferido para alertar al usuario que algo requiere de su atención.

  • Proveedor de Contenidos : Un "ContentProvider" es un almacen de datos que provee acceso a datos en el dispositivo. Un ejemplo clásico es el "ContentProvider" que es usado para tomar datos desde la lista de contactos. Tu aplicación puede utilizar datos que otras aplicaciones han expuesto vía un "ContentProvider". Tú también puede definir tus propios "ContentProvider" para así exponer tus propios datos.

  • No hay comentarios.: