2010-04-06 11 views

Respuesta

12

La clase android.app.Application es una instalación opcional para extender y almacenar el estado global de la aplicación. Hay otras formas de hacerlo, por lo que la mayoría de las aplicaciones no personalizan esta clase.

Sin embargo, las actividades definen cada etapa importante de su aplicación. No sería posible construir una aplicación sin Actividades. Tendrás una clase de actividad principal y esto se definirá con 'extends activity'.

+0

No me refiero a ser pedante, pero ¿quiso decir "No sería posible crear una aplicación sin Actividades" ?. Solo quiero ser completamente claro en esto. – jcrowson

+0

Well Activites es el componente básico de las aplicaciones. Al igual que las páginas de una aplicación web. Cualquier aplicación tendrá al menos una (aunque es posible que puedas tener un widget sin una, supongo). Tu aplicación necesitará un punto de entrada Actividad. –

+0

Entonces, ¿puede comenzar las clases que amplían la aplicación, de forma similar al inicio de las actividades con intención? – jcrowson

5

mejor manera de ver la diferencia se ve que es la jerarquía de clases

Activity

java.lang.Object 
    ↳ android.content.Context 
     ↳ android.content.ContextWrapper 
      ↳ android.view.ContextThemeWrapper 
       ↳ android.app.Activity 

Y Application

java.lang.Object 
↳ android.content.Context 
    ↳ android.content.ContextWrapper 
     ↳ android.app.Application 

aplicación es lo que vive hasta que su proceso de aplicación de Android se mató. Puede usar esto para almacenar datos específicos de la aplicación (siempre que su aplicación esté activa) que se puedan usar en diversas actividades. Tenga en cuenta que no estoy diciendo que deba ... Las preferencias compartidas pueden ser otra forma adecuada de ir dependiendo de su uso. Además, para que quede claro, no puede usar su Aplicación para iniciar su aplicación a diferencia de la Actividad de iniciador que proporciona en su archivo de manifiesto.

Usted puede utilizar su propia clase de aplicaciones personalizadas de la siguiente manera

<application 
    android:name="icom.osfg.test.app.AppController" 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/MyTheme" > 
    <!-- all the activities goes here --> 
</application> 

donde

AppController extends Application 
1

sólo para añadir a las respuestas anteriores.

La clase Application será un singleton que durará mientras su aplicación esté activa.

Se puede inicializar componentes globales en su Application clase extendida, ya que durará hasta que el proceso de morir si no desea manejar con el habitual Activitylifecycle.

Por ejemplo, la inicialización de bibliotecas de terceros como: Parse, CanaryLeak, Crashlytics.

public class App extends Application { 

    @Override 
    public void onCreate() { 
     super.onCreate(); 

     Parse.initialize(this); 
     LeakCanary.install(this); 
     Fabric.with(this, new Crashlytics()); 
    } 
} 
Cuestiones relacionadas