/índice:

Fundada en 2003 por Andy Rubin, Rich Miner, Nick Sears y Chris White, comprada por Google en agosto de 2005.

Arquitectura de
Android

Cada aplicación se ejecuta en su propio proceso. La VM Dalvik compila bytecode de Java en dex, de manera que logra mayor eficiencia y mejor adaptación. Compilación para desarrollo: Compilación para desarrollo Compilación para publicación: Compilación para publicación

Atendiendo a su arquitectura, una app podría definirse como un “paquete” de componentes desacoplados trabajando conjuntamente respondiendo a eventos. Estos componentes son:

Las diferentes versiones de Android (lanzadas bajo distintos codenames) se corresponden con niveles de API. Versiones de
Android

Activity

Simplificando, un Activity es una pantalla de interfaz. Una aplicación podría considerarse una sucesión de Activities independientes entre sí. Cada actividad tiene un ciclo de vida.

AndroidManifest.xml

Contiene información esencial sobre la aplicación, como configuración, permisos, Activities, Services, Providers, etc. En AndroidManifest.xml, la Activity que se lanza al inicio tiene la categoría android.intent.category.LAUNCHER.

Layouts

Ordenación y representación de elementos en un Activity. En formato XML. Se colocan en res > layout. Algunos tipos:

Los elementos que componen un layout son Widgets. Por ejemplo:

  • TextView
  • EditText
  • Button
  • RadioButton
  • CheckBox
  • Switch
  • ToggleButton
  • ImageView
  • ProgressBar (spinner de “cargando..”)

Para identificarlos se usa el parámetro android:id en el template. Con @+id/nombre se crea, con @id/nombre se hace referencia a él.

Podemos trabajar con Widgets desde el Activity a través del id. Por ejemplo:

EditText editText = (EditText)findViewById(R.id.edit_text);

De la clase R.java se pueden recuperar widgets, pero también strings:

String text = getResources().getString(R.string.hello);

o asignar imágenes:

ImageView imageView = (ImageView)findViewById(R.id.image);
imageView.setImageResource(R.drawable.background);

Textos, traducciones

Los textos se almacenan en ficheros XML, en res > values. Cada traducción va en la carpeta values–XX (es, en, de…). Para referenciarlos usamos @string/name.

Events

La interacción se basa en eventos. “Escucharemos” esos eventos para realizar acciones mediante listeners. Ejemplo:

Button button = (Button)findViewById(R.id.my_button);
button.setOnClickListener(new OpenSettingsClickListener());

Creamos un listener que implemente el interfaz adecuado en una clase propia y se la asociamos al Widget.

public class OpenSettingsClickListener implements View.OnClickListener {
  @Override
  public void onClick(View view) {
    //TODO
  }
}

Intent

Permite cambiar de Activity. Puede imaginarse una pila de Activities, de forma que la nueva se abre sobre la anterior.

Intent intent = new Intent(this, NextActivity.class);
startActivity(intent);

Si cerramos la nueva actividad usando finish(), volveremos a la inicial.

Podemos pasar parámetros (extras):

intent.putExtra("key", value);

Y recuperarlos en el destino:

Bundle bundle = getIntent().getExtras();
String value = bundle.getString("key");

Debemos de pasar la menor cantidad de datos posible.