626 Stimmen

Was ist ein Android PendingIntent?

Ich bin ein Neuling bei Android. Ich habe die Android-Dokumentation gelesen, aber ich brauche noch etwas mehr Klarheit. Kann mir jemand sagen, was genau ein PendingIntent ist?

24voto

Narendra Motwani Punkte 1045

Was ist eine Absicht?

Ein Intent ist ein spezieller Befehl in Android, mit dem Sie einen Befehl an das Android-Betriebssystem senden können, um etwas Bestimmtes zu tun. Stellen Sie sich das als eine Aktion vor, die ausgeführt werden muss. Es gibt viele Aktionen, die ausgeführt werden können, z. B. das Senden einer E-Mail, das Anhängen eines Fotos an eine E-Mail oder sogar das Starten einer Anwendung. Der logische Arbeitsablauf bei der Erstellung einer Absicht sieht normalerweise wie folgt aus: a. Erstellen Sie die Absicht b. Hinzufügen von Intent-Optionen -> z. B. welche Art von Intent wir an das Betriebssystem senden oder welche Attribute mit diesem Intent verbunden sind, wie z. B. eine Textzeichenfolge oder etwas, das mit dem Intent weitergegeben wird c. Ausführen des Intent

Beispiel aus der Praxis: Nehmen wir an, ich wache morgens auf und habe die "ABSICHT", auf die Toilette zu gehen. Dann muss ich erst einmal DENKEN, dass ich auf die Toilette muss, aber das bringt mich nicht wirklich auf die Toilette. Ich muss dann meinem Gehirn sagen, dass ich erst aufstehen muss, dann zum Waschraum gehen muss, dann loslassen muss, dann meine Hände waschen muss, dann meine Hände abwischen muss. Sobald ich weiß, wohin ich gehe, SENDE ich den Befehl zum Aufstehen und mein Körper wird aktiv.

Was ist Pending Intents?

Um bei dem Beispiel aus dem wirklichen Leben zu bleiben: Nehmen wir an, ich möchte duschen, aber erst NACH dem Zähneputzen und dem Frühstück. Ich weiß also, dass ich frühestens in 30-40 Minuten duschen werde. Ich habe immer noch im Kopf, dass ich meine Kleidung vorbereiten und dann die Treppe zum Bad hinaufgehen muss, um mich dann auszuziehen und zu duschen. Das wird aber erst nach 30-40 Minuten geschehen. Ich habe jetzt die Absicht zu duschen, die noch aussteht. Sie ist 30-40 Minuten lang ANHÄNGIG.

Das ist so ziemlich der Unterschied zwischen einem Pending Intent und einem Regular Intent. Reguläre Absichten können ohne eine ausstehende Absicht erstellt werden, aber um eine ausstehende Absicht zu erstellen, müssen Sie zuerst eine reguläre Absicht einrichten.

0 Stimmen

Ich mochte das einfache und das Beispiel sehr, ich habe es mit diesen Worten gut verstanden.

0 Stimmen

Ich freue mich, dass dieser Beitrag für Sie nützlich ist Josema

0 Stimmen

Dies ist genau dasselbe wie die obige Erklärung von Shakeeb Ayaz. Wer hat von wem abgeschrieben? :)

20voto

ARK Punkte 3036

TAXI-ANALOGIE

Absicht

Intents werden normalerweise zum Starten von Diensten verwendet. Zum Beispiel:

Intent intent = new Intent(CurrentClass.this, ServiceClass.class);
startService(intent);

Das ist so, wie wenn Sie ein Taxi rufen:

Myself = CurrentClass
Taxi Driver = ServiceClass

Schwebende Absicht

Sie müssen etwas wie dieses verwenden:

Intent intent = new Intent(CurrentClass.this, ServiceClass.class);
PendingIntent pi = PendingIntent.getService(parameter, parameter, intent, parameter);
getDataFromThirdParty(parameter, parameter, pi, parameter);

Diese dritte Partei wird nun den Dienst in Ihrem Namen starten. Eine Analogie aus dem wirklichen Leben ist Uber oder Lyft, die beide Taxiunternehmen sind.

Sie senden eine Anfrage für eine Fahrt an Uber/Lyft. Uber/Lyft ruft dann einen seiner Fahrer in Ihrem Namen an.

Deshalb:

Uber/Lyft ------ ThirdParty which receives PendingIntent
Myself --------- Class calling PendingIntent
Taxi Driver ---- ServiceClass

0 Stimmen

Danke für new Intent(CurrentClass.this . Alle anderen setzen einfach context aber Sie gaben tatsächliche Kontext was hier angeboten werden soll.

0 Stimmen

Wenn du an Gott glaubst, Gott segne dich, mir ist gerade zum Weinen zumute, ich habe tatsächlich Tränen in den Augen.

0 Stimmen

Großartig mit Code-Analogie

17voto

Oded Breiner Punkte 26754

Eine zukünftige Absicht, die andere Anwendungen nutzen können.
Und hier ist ein Beispiel für die Erstellung eines solchen:

Intent intent = new Intent(context, MainActivity.class);
PendingIntent pendIntent = PendingIntent.getActivity(context, 0, intent, 0);

9 Stimmen

Abgelehnt, weil Sie nicht wirklich erklären, was das Besondere an einer Absicht ist, die "zukunftsweisend" ist oder von anderen Anwendungen genutzt werden kann.

0 Stimmen

@WhereDatApp.com wurde es von Antoine de Saint Exupéry gesagt und von Lewis Galantière übersetzt ;)

0 Stimmen

@Choletski danke, ich wusste nichts von der Übersetzung

11voto

srinu Punkte 111

Ein PendingIntent ist ein Token, das Sie einer anderen Anwendung (z. B. Notification Manager, Alarm Manager oder anderen Anwendungen von Drittanbietern) geben, die dieser anderen Anwendung erlaubt, die Berechtigungen Ihrer Anwendung zu nutzen, um ein vordefiniertes Stück Code auszuführen. Um einen Broadcast über einen Pending Intent durchzuführen, holen Sie sich einen PendingIntent über PendingIntent.getBroadcast(). Um eine Aktivität über einen Pending Intent auszuführen, erhalten Sie die Aktivität über PendingIntent.getActivity().

8voto

PendingIntent ist im Grunde ein Objekt, das eine andere Intent Objekt. Dann kann es an eine fremde Anwendung übergeben werden, der Sie das Recht einräumen, die Operation auszuführen, d. h. die Absicht so auszuführen, als ob sie vom Prozess Ihrer eigenen Anwendung aus ausgeführt würde (gleiche Berechtigung und Identität). Aus Sicherheitsgründen sollten Sie immer explizite Intents an einen PendingIntent übergeben, anstatt implizite zu verwenden.

 PendingIntent aPendingIntent = PendingIntent.getService(Context, 0, aIntent,
                    PendingIntent.FLAG_CANCEL_CURRENT);

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X