Java >> Java tutorial >  >> Tag >> extends

Hvad er forskellen mellem Extends Application og Extends Activity i Android?

Klassen android.app.Application er en valgfri facilitet til udvidelse og lagring af applikations-global tilstand. Der er andre måder at gøre dette på, så de fleste apps tilpasser ikke denne klasse.

Aktiviteter er dog det, der definerer alle større stadier af din ansøgning. Det ville ikke være muligt at bygge en applikation uden Aktiviteter. Du vil have en hovedaktivitetsklasse, og denne vil faktisk blive defineret med 'forlænger aktivitet'.


Den bedste måde at se forskellen på ville være at se dets klassehierarki

Aktivitet

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

Og applikation

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

Applikationen er det, der lever, indtil din Android-app-proces er dræbt. Du kan bruge dette til at lagre applikationsspecifikke data (så længe din applikation er i live), som kan bruges på tværs af forskellige aktiviteter. Bemærk, at jeg ikke siger, at du skal... Delte præferencer kan være en anden passende vej at gå, afhængigt af din usecase. Også bare for at være klar kan du ikke bruge din applikation til at starte din app i modsætning til launcher-aktivitet, du angiver i din manifestfil.

Du kan bruge din egen brugerdefinerede applikationsklasse som følger

<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>

hvor

AppController extends Application

Bare for at tilføje til de tidligere svar.

Application klasse vil være en singleton, der vil leve, så længe din app er i live.

Du kan initialisere globale komponenter i din Application udvidet klasse, da det vil vare indtil din proces dør, hvis du ikke ønsker at håndtere den sædvanlige Activity livscyklus.

For eksempel initialisering af tredjepartsbiblioteker som: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());
    }
}

Java tag