web-dev-qa-db-fra.com

Différence entre l'extension de LifecycleActivity, Activity, ActionbarActivity et AppCompactActivity?

Dans Android, quelle est la principale différence entre l'extension des activités Lifecycler Activity, Activity, ActionBarActivity et AppCompactActivity? Comment ces classes diffèrent-elles en termes d'utilisation?

68
Umer Kiani
  • l’extension de ActionBarActivity vous donne la fonctionnalité ActionBar s à chaque niveau de l’API> = 7
  • en étendant Activity vous pouvez éviter d’ajouter d’autres projets/bibliothèques à votre projet, mais il vous manquera le ActionBar aux niveaux d’API inférieurs à 11

edit : Plus de détails:

ActionBarActivity fait partie de bibliothèque de support . Les bibliothèques de support sont utilisées pour offrir de nouvelles fonctionnalités sur les anciennes plates-formes. Par exemple, le ActionBar a été introduit dans l'API 11 et fait partie du Activity par défaut (selon le thème choisi). En revanche, il n'y a pas de ActionBar sur les anciennes plates-formes. La bibliothèque de support ajoute donc une classe enfant de Activity (ActionBarActivity) qui fournit les fonctionnalités de ActionBar et

edit2 : Mise à jour d'avril 2015 - il semble que le ActionBarActivity soit obsolète dans revision 22.1.0 de la bibliothèque de support. AppCompatActivity devrait être utilisé à la place.

edit3: Mise à jour août 2017 - LifecycleActivity est un LifecycleOwner mais:

"Etant donné que les composants d’architecture sont en phase alpha, les classes Fragment et AppCompatActivity ne peuvent pas l’implémenter (car nous ne pouvons pas ajouter de dépendance d’un composant stable à une API instable). Jusqu'à ce que Lifecycle soit stable, les classes LifecycleActivity et LifecycleFragment sont fournies. Le projet Lifecycles est publié, les fragments de bibliothèque de support et les activités implémentent l'interface LifecycleOwner; LifecycleActivity et LifecycleFragment seront obsolètes à ce moment-là. "

(copié de la directive Composants d'architecture)

82
stan0

Si vous regardez attentivement, vous verrez ceci

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

Ici vous pouvez lire sur FragmentActivity: http://developer.Android.com/reference/Android/support/v4/app/FragmentActivity.html

Et les différences entre Activity et FragmentActivity: Différence entre Activity et FragmentActivity

En outre, il existe de nouveaux thèmes pour le style ActionBar ... https://developer.Android.com/training/basics/actionbar/styling.html

La barre d’action est introduite dans le niveau d’API 11. com.Android.support:appcompat-v7:+ est une bibliothèque de support qui vous permet d’avoir un ActionBar dans votre application pour les appareils fonctionnant sur Android 3.0 ou inférieur). Ainsi, si vous avez besoin d’une barre d’action inférieure au niveau 11 de l’API, votre activité doit étendre ActionBarActivity.

Si vous ciblez les API de niveau 11 ou supérieur, vous n'avez pas besoin d'étendre ActionBarActivity et de faire référence à AppCompat. Vous pouvez simplement étendre l'activité et vous aurez actionabr par défaut.

Le projet par défaut d'Android Studio l'inclut automatiquement dans les dépendances et étend ActionbarActivity à la place de Activity afin de l'utiliser.

7
vanste25

Le ActionBarActivity ou le SupportActionBarActivity ont des méthodes et des propriétés supplémentaires qui ne sont pas dans un Activity générique. Par exemple, des méthodes pour ajouter des tabulations sont présentes dans le ActionBarActivity et non dans un Activity générique.

La principale différence étant que vous n'obtenez pas de ActionBar sur un générique Activity.

4
danny117

Vous utilisez la bibliothèque de support Android). Lorsque vous accédez à Actionbaractivity., Les utilisations de la bibliothèque de support constituent votre application pouvant être suport pour un nombre maximal de périphériques. La bibliothèque de support donne à votre application le pouvoir de Compatibilité ascendante. Actionbaractivity vous donne la fonctionnalité multiple comme Actionbardrawer bascule, etc., il existe plusieurs bibliothèques de support disponibles. Voir ce lien .. et partager avec vos amis ... https://developer.Android.com/tools /support-library/index.html

1
Noorul

ActionBarActivity a juste plus de bibliothèques de support et une meilleure utilisation des nouveaux thèmes disponibles depuis api 11.

"Dans sa forme la plus élémentaire, la barre d'action affiche le titre de l'activité et l'icône de l'application sur la gauche. Même sous cette forme simple, la barre d'action est utile pour toutes les activités afin d'informer les utilisateurs de l'endroit où elles se trouvent et de maintenir une cohérence. identité pour votre application ".

1
Matthew Carnaghi