Unterschied zwischen der Verlängerung von LifecycleActivity, Activity, ActionbarActivity und AppCompactActivity?

70

Was ist in Android der Hauptunterschied zwischen der Erweiterung der Lifecycler-Aktivität, Aktivität, ActionBarActivity und AppCompactActivity? Wie unterscheiden sich diese Klassen in Bezug auf die Verwendung?

Umer Kiani
quelle
Weitere Informationen finden Sie hier: stackoverflow.com/questions/23045472/… ActionBarActivity erweitert FragmentActivity und bietet Unterstützung für den Backport der Appcompat-Aktionsleiste.

Antworten:

83
  • Durch die Erweiterung erhalten ActionBarActivitySie die ActionBars-Funktionalität auf jeder API-Ebene> = 7
  • Durch die Erweiterung können ActivitySie vermeiden, Ihrem Projekt zusätzliche Projekte / Bibliotheken hinzuzufügen, aber es fehlen die ActionBarAPI-Ebenen unter 11

bearbeiten : Weitere Details:

ActionBarActivityist Teil der Support Library . Support-Bibliotheken werden verwendet, um neuere Funktionen auf älteren Plattformen bereitzustellen. Zum Beispiel ActionBarwurde das in API 11 eingeführt und ist Activitystandardmäßig Teil des (abhängig vom eigentlichen Thema). Im Gegensatz dazu gibt es ActionBarauf den älteren Plattformen keine . Daher fügt die Support-Bibliothek eine untergeordnete Klasse von Activity( ActionBarActivity) hinzu, die die ActionBarFunktionalität und die Benutzeroberfläche des Systems bereitstellt

edit2 : Update April 2015 - es sieht so aus, als ob das ActionBarActivityin revision 22.1.0der Support-Bibliothek veraltet ist . AppCompatActivitysollte stattdessen verwendet werden.

edit3: Update Aug 2017 - LifecycleActivity ist ein LifecycleOwner, aber:

"Da sich die Architekturkomponenten im Alpha-Stadium befinden, können Fragment- und AppCompatActivity-Klassen sie nicht implementieren (da wir einer instabilen API keine Abhängigkeit von einer stabilen Komponente hinzufügen können). Bis Lifecycle stabil ist, werden LifecycleActivity- und LifecycleFragment-Klassen zur Vereinfachung bereitgestellt Das Lifecycles-Projekt wird veröffentlicht. Unterstützungsbibliotheksfragmente und -aktivitäten implementieren die LifecycleOwner-Schnittstelle. LifecycleActivity und LifecycleFragment sind zu diesem Zeitpunkt veraltet. "

(kopiert aus der Richtlinie für Architekturkomponenten)

stan0
quelle
2
"Ihnen fehlt die ActionBar auf API-Ebenen unter" 7
m121212
@ m121212 Die ActionBar wurde in API Level 11 eingeführt. Wenn Sie Activity erweitern, können Sie sie daher nur auf Geräten
ausführen,
Dies ist nicht wahr, in der Tat wird eine Unterstützungsbibliothek bereitgestellt, um Funktionen für API-Level unter 11 (zum Beispiel) zu unterstützen
m121212
Der von Ihnen zitierte Satz bezieht sich auf den Fall, dass keine Unterstützungsbibliothek verwendet wird. Daher gibt es auf API-Ebenen <11 keine Aktionsleiste. Sie haben die ursprüngliche Aktivität für diese API-Levels entwickelt
stan0
4
Daumen hoch zu dieser Antwort. Natürlich gibt es genug Dokumentation, um bis zum Ende unserer Tage zu lesen. Manchmal brauchen wir eine kurze Definition der Dinge.
Josh
7

Wenn Sie genau hinschauen, werden Sie dies sehen

public class ActionBarActivity extends FragmentActivity
implements ActionBarDrawerToggle.DelegateProvider TaskStackBuilder.SupportParentable

Hier können Sie über FragmentActivity lesen: http://developer.android.com/reference/android/support/v4/app/FragmentActivity.html

Und Unterschiede zwischen Aktivität und Fragmentaktivität: Unterschied zwischen Aktivität und Fragmentaktivität

Außerdem gibt es einige neue Themen für das Styling von actionBar ... https://developer.android.com/training/basics/actionbar/styling.html

Actionbar wird in API Level 11 eingeführt. Com.android.support:appcompat-v7:+ ist eine Support-Bibliothek, mit der Sie eine ActionBar in Ihrer App für Geräte haben können, die unter Android 3.0 oder niedriger ausgeführt werden. Wenn Sie also eine Aktionsleiste unterhalb von API-Level 11 benötigen, muss Ihre Aktivität ActionBarActivity erweitern.

Wenn Sie auf API-Level 11 und höher abzielen, müssen Sie ActionBarActivity nicht erweitern und AppCompat referenzieren. Sie können die Aktivität einfach erweitern und haben standardmäßig actionabr.

Das Standardprojekt von Android Studio schließt es automatisch in Abhängigkeiten ein und erweitert ActionbarActivity anstelle von Activity, um es zu verwenden.

vanste25
quelle
4

Die ActionBarActivityoder die SupportActionBarActivityhaben zusätzliche Methoden und Eigenschaften, die nicht generisch sind Activity. Beispielsweise sind Methoden zum Hinzufügen von Registerkarten in der ActionBarActivityund nicht in einer generischen vorhanden Activity.

Der Hauptunterschied besteht darin, dass Sie kein ActionBarGenerikum erhalten Activity.

danny117
quelle
Was ist, wenn man nicht daran interessiert ist, die Aktionsleiste zu verwenden? Hat es einige Leistungsverbesserungen gegenüber Simple Activity oder ist es nur aufgrund der Aktionsleiste besser zu verwenden?
Umer Kiani
IDK, wenn Actionbaractivity Leistungsverbesserungen gegenüber
Nichtaktivität
Vielen Dank. Ich bin immer noch etwas verwirrt darüber, was ich in meinen zukünftigen Apps verwenden soll und was empfehlenswerter ist.
Umer Kiani
Wenn Sie ActioBarActivity nicht verwenden möchten, sollten Sie FragmentActivity verwenden ... In meinem Beitrag wird die Logik hinter ActionBarActivity beschrieben.
vanste25
Machen Sie sich keine Gedanken darüber, was Sie verwenden sollen. Es ist sehr einfach, einer vorhandenen App eine Aktionsleiste hinzuzufügen. Vielleicht 10 Minuten Sie ändern einfach den Code, um die Aktionsbaraktivität zu erweitern, und beheben dann die Importe und andere Nuancenfehler.
danny117
1

ActionBarActivity bietet nur mehr Unterstützungsbibliotheken und eine bessere Nutzung der neueren Themen, die in API 11 verfügbar sind.

"In ihrer einfachsten Form zeigt die Aktionsleiste links den Titel der Aktivität und das App-Symbol an. Selbst in dieser einfachen Form ist die Aktionsleiste für alle Aktivitäten nützlich, um Benutzer darüber zu informieren, wo sie sich befinden, und um eine konsistente Darstellung zu gewährleisten Identität für Ihre App. "

Matthew Carnaghi
quelle
1

Sie verwenden die Android-Supportbibliothek, wenn Sie zur Aktionsleiste gelangen. Die Verwendung der Support-Bibliothek ist also, dass Ihre Anwendung für die maximale Anzahl von Geräten unterstützt werden kann. Die Support-Bibliothek bietet Ihrer Anwendung die Möglichkeit der Abwärtskompatibilität. Actionbaractivity bietet Ihnen mehrere Funktionen wie Actionbardrawer-Umschaltung usw. Es stehen weitere Unterstützungsbibliotheken zur Verfügung. Sehen Sie diesen Link .. und teilen Sie ihn Ihren Freunden mit ... https://developer.android.com/tools/support-library/index.html

Noorul
quelle