Was ist eine Absicht in Android?

347
  • Was ist eine Absicht in Android?
  • Kann jemand ein Beispiel ausarbeiten?
  • Was sind die Arten von Absichten und warum verwenden wir sie?
  • Warum sind Absichten in Android so wichtig?
Nikunj Patel
quelle
Wie Windows, das ein nachrichtenbasiertes Betriebssystem ist und Benutzereingaben an das Programm benachrichtigt, um eine Nachricht an sie zu senden, verwendet Android die Absicht, dies zu tun!
AminM

Antworten:

486

Eine Absicht ist eine "Absicht", eine Handlung auszuführen; mit anderen Worten,

Ein Messaging-Objekt, mit dem Sie eine Aktion von einer anderen App-Komponente anfordern können

Eine Absicht ist im Grunde eine Nachricht, die besagt, dass Sie etwas getan haben oder wollen. Je nach Absicht warten Apps oder das Betriebssystem möglicherweise darauf und reagieren entsprechend. Stellen Sie sich das als eine tolle E-Mail an eine Reihe von Freunden vor, in der Sie Ihrem Freund John sagen, dass er etwas tun soll, oder an Freunde, die X ( "Absichtsfilter" ) ausführen können, um X auszuführen. Die anderen Leute ignorieren die E-Mail. aber John (oder Freunde, die X können) werden darauf reagieren.

Um auf eine Broadcast-Absicht zu warten (z. B. wenn das Telefon klingelt oder eine SMS empfangen wird), implementieren Sie einen Broadcast-Empfänger , dem die Absicht übergeben wird. Um zu deklarieren, dass Sie die App-Absicht eines anderen wie "Bild aufnehmen" verarbeiten können, deklarieren Sie einen Intent-Filter in der Manifest-Datei Ihrer App .

Wenn Sie eine Absicht , etwas zu tun feuern wollen, wie die Dialer - Pop - up, Sie eine Absicht abfeuern sagen Sie werden.

Chirag
quelle
1
@Chirag Raval Was ist der Unterschied zwischen einem Intent- und einem Action-Listener?
Mayooran
1
Darf ich bitte den letzten Satz noch einmal erklären? Wenn Sie abfeuern wollen ..
Shafizadeh
1
Ähnlich wie bei C # -Delegierten?
Paul
Tatsächlich bedeutet eine Aktion, dass Sie eine Komponente mit einer Absicht von einer anderen Komponente aus starten können. Dafür wird es hauptsächlich verwendet.
Sreekanth Karumanaghat
Auch um dies hinzuzufügen ... Absicht ist asynchron.
Sreekanth Karumanaghat
165

Was ist eine Absicht?

Eine Absicht ist im Grunde eine Nachricht, die zwischen Komponenten (wie Aktivitäten , Diensten, Rundfunkempfängern und Inhaltsanbietern ) übertragen wird. Es entspricht also fast den Parametern, die an API-Aufrufe übergeben werden. Die grundlegenden Unterschiede zwischen API-Aufrufen und dem Aufrufen von Komponenten über Absichten sind:

  • API-Aufrufe sind synchron, während absichtsbasierte Aufrufe asynchron sind.
  • API-Aufrufe sind zur Kompilierungszeit gebunden, während absichtsbasierte Aufrufe zur Laufzeit gebunden sind.

Natürlich können Absichten genau wie API-Aufrufe verwendet werden, indem sogenannte explizite Absichten verwendet werden, die später erläutert werden. Aber meistens sind implizite Absichten der richtige Weg, und das wird hier erklärt.

Eine Komponente, die eine andere aufrufen möchte, muss nur ihre Absicht zum Ausdruck bringen, einen Job auszuführen. Und jede andere Komponente, die existiert und behauptet hat, dass sie einen solchen Job durch Absichtsfilter ausführen kann , wird von der Android-Plattform aufgerufen, um den Job auszuführen. Dies bedeutet, dass sich keine der Komponenten der Existenz des anderen bewusst ist, aber dennoch zusammenarbeiten kann, um das gewünschte Ergebnis für den Endbenutzer zu erzielen.

Diese unsichtbare Verbindung zwischen Komponenten wird durch die Kombination von Absichten, Absichtsfiltern und der Android-Plattform erreicht.

Dies führt zu enormen Möglichkeiten wie:

  • Mix and Match bzw. Plug & Play von Komponenten zur Laufzeit.
  • Ersetzen der integrierten Android-Anwendungen durch benutzerdefinierte Anwendungen.
  • Wiederverwendung auf Komponentenebene innerhalb und zwischen Anwendungen.
  • Serviceorientierung auf höchstem Niveau, wenn ich sagen darf.

Weitere technische Details zu Absichten finden Sie in der Android-Dokumentation .

Eine Absicht ist eine abstrakte Beschreibung einer auszuführenden Operation. Es kann mit startActivity verwendet werden , um eine Aktivität zu starten , BroadcastIntent , um sie an interessierte BroadcastReceiver- Komponenten zu senden , und startService (Intent) oder bindService (Intent, ServiceConnection, int) , um mit einem Hintergrunddienst zu kommunizieren.

Ein Intent bietet die Möglichkeit, eine späte Laufzeitbindung zwischen dem Code in verschiedenen Anwendungen durchzuführen. Seine wichtigste Verwendung ist das Starten von Aktivitäten, bei denen es als Klebstoff zwischen Aktivitäten angesehen werden kann. Es handelt sich im Grunde genommen um eine passive Datenstruktur, die eine abstrakte Beschreibung einer auszuführenden Aktion enthält. Die wichtigsten Informationen in einer Absicht sind:

  • Aktion Die allgemeine auszuführende Aktion, z. B. ACTION_VIEW, ACTION_EDIT, ACTION_MAIN usw.
  • Daten Die zu bearbeitenden Daten, z. B. ein Personendatensatz in der Kontaktdatenbank, ausgedrückt als Uri.

Erfahren Sie mehr

mr.boyfox
quelle
4
Ich schätze die Verwendung von Informatikkonzepten in dieser Erklärung. Dies macht die Diskussion konkreter und besonders hilfreich für Leser mit einem soliden Abschluss in Informatik.
Donal Lafferty
49

Mit Absichten können Sie Android mitteilen , was Sie tun möchten . Mit anderen Worten, Sie beschreiben Ihre Absicht. Mit Absichten kann dem Android-System signalisiert werden, dass ein bestimmtes Ereignis aufgetreten ist. Andere Komponenten in Android können sich über einen Absichtsfilter für dieses Ereignis registrieren.

Es folgen zwei Arten von Absichten

1. Explizite Absichten

wird verwendet, um eine bestimmte Komponente aufzurufen. Wenn Sie wissen, welche Komponente Sie starten möchten und dem Benutzer keine freie Kontrolle darüber geben möchten, welche Komponente verwendet werden soll. Sie haben beispielsweise eine Anwendung mit zwei Aktivitäten. Aktivität A und Aktivität B. Sie möchten Aktivität B über Aktivität A starten. In diesem Fall definieren Sie eine explizite Absicht, die auf Aktivität B abzielt, und verwenden sie dann, um sie direkt aufzurufen.

2. Implizite Absichten

Wird verwendet, wenn Sie eine Vorstellung davon haben, was Sie tun möchten, aber nicht wissen, welche Komponente gestartet werden soll. Oder wenn Sie dem Benutzer die Möglichkeit geben möchten, zwischen einer Liste der zu verwendenden Komponenten zu wählen. Wenn diese Absichten an das Android-System gesendet werden, sucht es nach allen Komponenten, die für die bestimmte Aktion und den Datentyp registriert sind. Wenn nur eine Komponente gefunden wird, startet Android die Komponente direkt. Sie haben beispielsweise eine Anwendung, die die Kamera zum Aufnehmen von Fotos verwendet. Eine der Funktionen Ihrer Anwendung besteht darin, dass Sie dem Benutzer die Möglichkeit geben, die von ihm aufgenommenen Fotos zu senden. Sie wissen nicht, über welche Art von Anwendung der Benutzer Fotos senden kann, und Sie möchten dem Benutzer auch die Option geben, auszuwählen, welche externe Anwendung verwendet werden soll, wenn er über mehrere verfügt. In diesem Fall würden Sie keine explizite Absicht verwenden.

Eine explizite Absicht wird immer an ihr Ziel geliefert, egal was sie enthält. Der Filter wird nicht konsultiert. Eine implizite Absicht wird jedoch nur dann an eine Komponente übermittelt, wenn sie einen der Filter der Komponente durchlaufen kann

Absichtsfilter

Wenn eine Absicht an das Android-System gesendet wird, werden geeignete Anwendungen für diese Absicht ermittelt. Wenn mehrere Komponenten für diese Art von Absichten registriert wurden, bietet Android dem Benutzer die Möglichkeit, eine davon zu öffnen.

Diese Bestimmung basiert auf IntentFilters. Ein IntentFilters gibt die Absichtstypen an, auf die eine Aktivität, ein Dienst oder ein Broadcast-Empfänger antworten kann. Ein Absichtsfilter deklariert die Funktionen einer Komponente. Es gibt an, welche Aktivitäten oder Dienste ausgeführt werden können und welche Arten von Sendungen ein Empfänger verarbeiten kann. Damit kann die entsprechende Komponente Absichten des deklarierten Typs empfangen. IntentFilters werden normalerweise über die Datei AndroidManifest.xml definiert. Für BroadcastReceiver ist es auch möglich, sie in der Codierung zu definieren. Ein IntentFilters wird durch seine Kategorie-, Aktions- und Datenfilter definiert. Es kann auch zusätzliche Metadaten enthalten.

Wenn eine Komponente keinen Intent-Filter definiert, kann sie nur von expliziten Intents aufgerufen werden.

Es folgen zwei Möglichkeiten, einen Filter zu definieren

1. Manifestdatei

Wenn Sie den Absichtsfilter im Manifest definieren, muss Ihre Anwendung nicht ausgeführt werden, um auf die im Filter definierten Absichten zu reagieren. Android registriert den Filter, wenn Ihre Anwendung installiert wird.

2.BroadCast-Empfänger

Wenn Sie möchten, dass Ihr Broadcast-Empfänger die Absicht nur empfängt, wenn Ihre Anwendung ausgeführt wird. Dann sollten Sie Ihren Absichtsfilter zur Laufzeit (programmgesteuert) definieren. Beachten Sie, dass dies nur für Rundfunkempfänger funktioniert.

Varun Bhatia
quelle
12

Nach dem Schreiben einer einzelnen Aktivität muss zu einer anderen Aktivität gewechselt werden, um eine andere Aufgabe mit oder ohne Informationen aus der ersten Aktivität auszuführen.

Die Android-Plattform ermöglicht den Übergang über Intent Interface.

Die Wörter stammen von hier: Verwenden von Intent Demo und ich empfehle Ihnen, dieses Beispiel durchzugehen, da sie auch eine Codedatei bereitgestellt haben. so können Sie es verwenden und leicht das gleiche verstehen.

Paresh Mayani
quelle
Absichten sind mehr als der Übergang zwischen Aktivitäten. Es wäre hilfreicher, einen Überblick zu geben.
Vaddadi Kartick
@KartickVaddadi Stimmen Sie Ihrem Punkt zu. Dies war meine Antwort für die eine Verwendung von Intent!
Paresh Mayani
Paresh, der Link blog.vimviv.com/android/intent-android funktioniert nicht mehr :(
user2060383
9

Android Absicht

Mit Android Intent können Sie von einer Android-Aktivität zu einer anderen navigieren. In diesem Tutorial werden anhand von Beispielen auch verschiedene Arten von Android-Absichten beschrieben.

Android Intent kann als einfaches Nachrichtenobjekt definiert werden, mit dem von einer Aktivität zu einer anderen kommuniziert wird.

Absichten definieren die Absicht einer Anwendung. Sie werden auch zum Übertragen von Daten zwischen Aktivitäten verwendet.

Mit einem Android Intent können folgende drei Aufgaben ausgeführt werden:

  1. Öffnen Sie eine andere Aktivität oder einen anderen Dienst aus der aktuellen Aktivität
  2. Übergeben Sie Daten zwischen Aktivitäten und Diensten
  3. Delegieren Sie die Verantwortung an eine andere Anwendung. Mit Intents können Sie beispielsweise die Browseranwendung öffnen, um eine URL anzuzeigen.

Absicht kann grob in 2 Kategorien eingeteilt werden. Es gibt keine Schlüsselwörter für diese Kategorie und nur eine breite Klassifizierung der Verwendung von Android-Absichten.

Explizite Android-Absicht

Explizite Android-Absicht ist die Absicht, in der Sie explizit die Komponente definieren, die vom Android-System aufgerufen werden muss.

 Intent MoveToNext = new Intent (getApplicationContext(), SecondActivity.class);

Implizite Android-Absicht

Implizite Android-Absichten ist die Absicht, bei der Sie nicht die genauen Komponenten definieren, sondern die Aktion definieren, die Sie ausführen möchten. Die Entscheidung, diese Aktion auszuführen, bleibt dem Betriebssystem überlassen. Das Betriebssystem entscheidet, welche Komponente für implizite Absichten am besten ausgeführt werden kann. Sehen wir uns ein Beispiel an:

    Intent sendIntent = new Intent();
    sendIntent.setAction(Intent.ACTION_SEND);

Weitere Informationen finden Sie weiter unten

http://developer.android.com/reference/android/content/Intent.html

IntelliJ Amiya
quelle
9

Nach ihrer Dokumentation:

Ein Intent ist ein Objekt, das eine Laufzeitbindung zwischen separaten Komponenten (z. B. zwei Aktivitäten) bereitstellt. Die Absicht repräsentiert die "Absicht einer App, etwas zu tun". Sie können Absichten für eine Vielzahl von Aufgaben verwenden, aber meistens werden sie verwendet, um eine andere Aktivität zu starten.

Hier ist der Link mit dem Beispiel: http://developer.android.com/training/basics/firstapp/starting-activity.html#BuildIntent

Wie im Dokument beschrieben, verwenden Sie zum Starten einer Aktivität (Sie müssen auch verstehen, um welche Aktivität es sich handelt) die folgende Absicht

/** Called when the user clicks the Send button */
public void sendMessage(View view) {
    Intent intent = new Intent(this, DisplayMessageActivity.class);
    EditText editText = (EditText) findViewById(R.id.edit_message);
    String message = editText.getText().toString();
    intent.putExtra(EXTRA_MESSAGE, message);
    startActivity(intent);
}
kta
quelle
8

Eine Absicht ist eine abstrakte Beschreibung einer auszuführenden Operation. Es kann mit startActivity verwendet werden, um eine Aktivität zu starten, BroadcastIntent, um sie an interessierte BroadcastReceiver-Komponenten zu senden, und startService (Intent) oder bindService (Intent, ServiceConnection, int), um mit einem Hintergrunddienst zu kommunizieren.

Weitere Details finden Sie unter folgenden Links:

1). http://developer.android.com/reference/android/content/Intent.html

2) http://developer.android.com/guide/topics/intents/intents-filters.html

3). http://www.vogella.de/articles/AndroidIntent/article.html

Es sind noch viele weitere Artikel verfügbar.

Dinesh Sharma
quelle
5

Was ist Absicht?

Es ist eine Art Nachricht oder Information, die an die Komponenten weitergegeben wird. Es wird verwendet, um eine Aktivität zu starten, eine Webseite anzuzeigen, SMS zu senden, E-Mails zu senden usw.

Es gibt zwei Arten von Absichten in Android:

Implizite Absicht
Explizite Absicht

Implizite Absicht wird verwendet, um die Systemkomponenten aufzurufen

Beispiel

Intent i = newIntent(android.content.Intent.ACTION_VIEW,Uri.parse(“http://www.amazon.com”));

startActivity(i);

Explizite Absicht wird verwendet, um die Aktivitätsklasse aufzurufen.

Beispiel

Intent intent = newIntent (this, SecondActivity.class);

startActivity(intent);

Sie können mehr lesen

http://www.vogella.com/tutorials/AndroidIntent/article.html#intents_overview http://developer.android.com/reference/android/content/Intent.html

Mina Fawzy
quelle
2

Eine Absicht ist eine Klasse, die die Informationen für einige Aktionen bindet.

Beispiel: Übergeben von Daten einer Aktivität an eine andere Aktivität, wenn der Benutzer solche Aktionen in ausführt

gegenwärtige Aktivität.

Madarkife
quelle
1

Im weitesten Sinne können wir Absicht als definieren

Wenn eine Aktivität eine andere Aktivität starten möchte, wird ein Objekt namens Intent erstellt, das angibt, welche Aktivität gestartet werden soll.

Kartik Goyal
quelle
0

Eine Android-Anwendung kann null oder mehr Aktivitäten enthalten. Wenn Ihre Anwendung mehr als eine Aktivität enthält, müssen Sie häufig von einer zur anderen navigieren. In Android navigieren Sie zwischen Aktivitäten durch eine sogenannte Absicht. Mit putExtra () können Sie einige Daten an die Aktivität übergeben, die Sie absichtlich starten möchten.

Shaon Hasan
quelle
0

Von dem Papier Deep Dive into Android IPC/Binder Framework atAndroid Builders Summit 2013 Link

Die Absicht wird in einigen kleinen, aber effektiven Zeilen verstanden

  1. Android unterstützt eine einfache Form von IPC (Inter Process Communication) über Absichten
  2. Intent Messaging ist ein Framework für die asynchrone Kommunikation zwischen Android-Komponenten (Aktivität, Dienst, Inhaltsanbieter, Rundfunkempfänger).
  3. Diese Komponenten können in derselben oder in verschiedenen Apps (dh Prozessen) ausgeführt werden.
  4. Aktiviert sowohl Punkt-zu-Punkt- als auch Veröffentlichungs-Abonnement-Messaging-Domänen
  5. Die Absicht selbst stellt eine Nachricht dar, die die Beschreibung der auszuführenden Operation sowie Daten enthält, die an den / die Empfänger übergeben werden sollen.

Aus diesem Thread geht eine einfache Antwort der Android-Architektin Dianne Hackborn hervor, wie data containersie tatsächlich ist.

Aus Sicht der Android-Architektur :

Intent ist ein Datencontainer, der für die Kommunikation zwischen Prozessen verwendet wird. Es basiert auf dem BinderStandpunkt der Android-Architektur.

Zahan Safallwa
quelle
0

Absichten werden verwendet, um eine andere Aktivität von einer Aktivität aus zu initiieren. Sie werden im Wesentlichen für verschiedene Zwecke verwendet, z. B. zum Senden von Daten an eine andere Aktivität von einer Aktivität und zum Auslösen von Zwecken.

Es gibt grundsätzlich zwei Arten

  1. Implizite Absichten.

  2. Explizite Absichten.

Als Anfänger weiß ich so viel, ich denke, dies wird eine grundlegende Vorstellung von Android-Absichten geben

Soorya Prakash
quelle
2
Bitte lesen Sie diesen Link , um Fragen zu beantworten.
Bonatti