Quelqu'un peut-il m'expliquer la différence entre une "activité" et une "intention" sur la plate-forme Android?
Dans un langage très simple, Activity
est votre interface utilisateur et tout ce que vous pouvez faire avec une interface utilisateur. Lorsque vous passez d'une interface utilisateur à une autre, vous devez lancer cette nouvelle interface utilisateur avec un Intent
. Intent
est votre événement qui est transmis avec les données de la première interface utilisateur à une autre.
Les intentions peuvent également être utilisées entre les interfaces utilisateur et les services d'arrière-plan. Intent
est également transmis lorsque vous souhaitez diffuser des données vers toutes les activités et tous les services en arrière-plan.
Intent
vit comme un objet, l'activité vit avec un visage et des interactions. J'espère que cela a été utile.
Les réponses existantes conviennent, mais voici une définition très basique des deux avec quelques liens.
Une application composant pour afficher une interface utilisateur. La classe d'activité est l'endroit où toutes les interactions utilisateur sont gérées (pressions sur les boutons, sélections de liste). Une activité spécifie une disposition pour la représenter à l'écran.
Une intention est un message système. Cela peut être broadcast autour du système pour notifier un événement aux autres applications (ou les vôtres!), Ou il peut être utilisé pour demander au système d’afficher une nouvelle activité.
Si tout ce que vous savez sur les intentions, c'est lorsque vous les utilisez pour commencer une nouvelle activité, je peux alors comprendre votre confusion.
Dans le cas le plus simple, vous démarrez une nouvelle activité comme celle-ci:
Intent intent = new Intent(this, SomeOtherActivity.class);
startActivity(intent);
On dirait bien que vous commencez une activité, et l’activité que vous commencez est «intentionnelle». Mais ce que vous faites réellement appelle la méthode startActivity()
et vous lui transmettez un conteneur appelé intent. Ce conteneur indique à startActivity()
quoi faire.
Vous pouvez le voir plus clairement lorsque vous passez des données à une nouvelle activité.
Intent intent = new Intent(this, SomeOtherActivity.class);
startActivity(intent);
intent.putExtra("ANIMAL_TYPE", "Unicorn");
intent.putExtra("ANIMAL_COLOR", "Ruby");
startActivity(intent);
Désormais, lorsque vous appelez startActivity()
, il examine l'intention et sait qu'il doit démarrer la classe SomeOtherActivity
. De plus, dans la classe SomeOtherActivity
, vous pouvez accéder aux paires clé/valeur transmises à partir de l'intention comme ceci:
Bundle extras = getIntent().getExtras();
if(extras !=null) {
String animal = extras.getString("ANIMAL_TYPE");
String animalColor = extras.getString("ANIMAL_COLOR");
}
Ce sont différentes classes qui ne peuvent en aucun cas être échangées. L’utilisation attendue des sous-classes Activity
consiste à contrôler le contenu et le comportement de la fenêtre de l’application. Intent
s, en revanche, sont de simples structures d'échange de données souvent utilisées pour lancer de nouvelles Activity
'es et leur transmettre des données, mais elles ont également d'autres utilisations.
La classe d'activité se charge de créer pour vous une fenêtre (plein écran ou flottante) dans laquelle vous pouvez placer vos éléments d'interface utilisateur afin que les activités interagissent avec l'utilisateur.
Les intentions sont principalement utilisées lorsque vous souhaitez passer d’une vue à l’autre (par exemple, une activité).
Lorsque vous êtes actuellement dans ActivityOne.class et que vous appelez:
Intent i = new Intent(this, ActivityTwo.class);
startActivity(i);
alors ActivityTwo sera montré à l'utilisateur.
Activité: C'est comme une page Web, par exemple. maison, contact. Il contient toute la partie UI de l'application.
Intention: vous pouvez considérer l’intention comme un moyen d’ouvrir une autre activité. Fondamentalement, il est utile d’ouvrir une nouvelle activité avec les données de l’activité précédente.