lunes, 31 de marzo de 2014

Android y la clase Application

La clase Application es lo que une todas las actividades, servicios y recibidores en una entidad unificada. Es difícil entender que puede hacer la clase application por nosotros, sin tener en cuenta los siguientes puntos:
  • Las actividades son muy volátiles.
  • Las actividades no tienen acceso a la zona de memoria de otras actividades.
  • Las actividades se paran y arrancan todo el tiempo por muchas razones y no hay manera de saber si una actividad ya ha sido iniciada antes o es esta su primera vez, mientras que el onCreate de la clase Application solo se llama la primera vez que se inicia , por lo que puede ser un buen lugar para iniciar cosas que solo se necesiten poner al principio.
  • Todas los recibidores de broadcast, servicios y actividades tienen un método en su superclase getApplication(), que si se castea resulta en la clase del tipo que hayamos definido: SampleApplication myApplication = (SampleApplication) getApplication();
Si necesitamos un lugar donde guardar datos que vayan a usar muchas actividades la clase Application, puede ser un buen sitio. Debemos tener mucho cuidado al agregar datos a esta clase, ya que se iniciará antes que cualquier componente declarado en nuestro manifest, por lo que debemos hacer el método onCreate lo más liviano posible.
Entonces, si creamos una clase Application , luego es todo muy sencillo. Primero la definimos en el manifest, después de la Application que ya tenemos creada ...

  1. <application android:icon="@drawable/icon"  
  2.         android:label="@string/app_name"  
  3.         android:name".SampleApplication"/>  
... y luego creamos también la clase.
 
  1. package com.example.android;  
  2.   
  3. import android.app.Application;  
  4.   
  5. public class SampleApplication extends Application {  
  6.       
  7.     public String username;  
  8.   
  9.     public void onCreate(){  
  10.         super.onCreate();  
  11.     }  
  12. }  
Y de forma análoga a como se comentaba, para acceder a este atributos, primero hacemos el cast, desde donde queramos, y luego seteamos la información
 
  1. SampleApplication myApplication = (SampleApplication) getApplication();  
  2. myApplication.username = "Hello";   
Debemos estar seguros de que la información que guardemos en Application es relevante en la mayoría de ocasiones, ya que almacenar datos en esta clase puede penalizar el inicio de una aplicación de forma considerable.

No hay comentarios:

Publicar un comentario