In erster Linie könnte diese Frage für einige Android-Veteranen wirklich absurd klingen, aber als Neuling, muss ich wirklich diese Frage stellen: Intent
Eine Intent
ist eine passive Datenstruktur, die Informationen von einem Activity
zum anderen trägt. Ein Intent
ist auch in der Lage, Daten in Form von Name-Wert-Paaren (über putExtra()
) zu halten.
Aber beim Überschreiben der onCreate()
Methode übergeben wir eine Bundle
als Parameter, der letztlich auch Werte in Form von Name-Wert-Paaren hält und in der Lage ist, Informationen mit Hilfe von onSaveInstanceState()
zu speichern.
In so einem Szenario brauchen wir beide und was unterscheidet die beiden?
UPDATE
Ich glaube, ich habe geführt euch in einen Irrglauben, dass ich das falsch verstanden habe, was ein Intent
ist:
Als ich sagte, „Ein Intent
ist eine passive Datenstruktur, die Activity
Informationen von einem trägt zu einem anderen ", was ich darauf hinweisen wollte, war, dass auch eine Intent
Informationen (andere als die Kontext-und Action-Beschreibung) mit Hilfe von putExtra()
Methode tragen kann. Warum müssen wir dann eine Bundle
verwenden?
Bitte geben Sie auch einen Grund in den Kommentaren unten, falls Sie die Frage abstimmen. Danke für die Großzügigkeit.Was ist der Unterschied zwischen einem Bündel und einer Absicht?
Antwort
Ich weiß nicht wirklich, von wo aus Sie Intent diese Definition bekam, aber als ‚Intent‘ Definition
Eine Absicht ist eine abstrakte Beschreibung eines Betriebs durchgeführt werden. Es kann mit startActivity verwendet werden, um eine Aktivität zu starten, broadcastIntent es alle interessierten BroadcastReceiver Komponenten zu senden, und den Start (Intent) oder bindService (Intent, ServiceConnection, int) mit einem Hintergrunddienst zu kommunizieren.
Ein Intent bietet die Möglichkeit, die späte Laufzeitbindung zwischen dem Code in verschiedenen Anwendungen durchzuführen. Seine wichtigste Verwendung ist in der Einführung von Aktivitäten, wo es als Klebstoff zwischen Aktivitäten gedacht werden kann. Es ist im Grunde eine passive Datenstruktur , die eine abstrakte Beschreibung einer auszuführenden Aktion enthält.
So Intent eine Aktion, um neue (Aktivität, Dienstleistung, BroadCastReceiver) zu verbinden
In Intent Sie eine Definition für Extras
Extras finden - Dies ist ein Bundle von irgendwelchen zusätzlichen Informationen. Dies kann verwendet werden, um erweiterte Informationen für die Komponente bereitzustellen. Wenn wir zum Beispiel eine Aktion zum Senden einer E-Mail-Nachricht haben, können wir hier auch zusätzliche Daten einfügen, um ein Thema, einen Text usw. anzugeben.
Das heißt also, Extras in dem Intent ist ein Objekt aus einem Bündel
-Bundle gehen, wie Sie erwähnten es ein Träger für Daten von einem Intent zum anderes und ist eine Karte von Key-Value
Variablen.
Bitte lesen Sie die Frage erneut und kehren Sie zurück. Ich habe die Beschreibung aktualisiert. – ikartik90
Überprüfen Sie meine Updates dann –
Aber warum ist der Rückgabetyp von 'putExtra()' ein 'Intent' und kein' Bundle'? Bitte überlege meine dummen Fragen noch eine Weile und gib mir Antworten. Vielen Dank. – ikartik90
Ich denke, Sie haben bereits verstanden, was ein Bundle
ist: eine Sammlung von Schlüssel-Wert-Paaren.
Allerdings ist eine Absicht viel mehr. Es enthält Informationen über eine Operation, die ausgeführt werden sollte. Diese neue Operation wird durch die Aktion, für die sie verwendet werden kann, und durch die Daten definiert, die sie anzeigen/bearbeiten/hinzufügen soll. Das System verwendet diese Informationen, um eine geeignete App-Komponente (Aktivität/Broadcast/Service) für die angeforderte Aktion zu finden.
Denken Sie an die Absicht als ein Bündel, das auch Informationen darüber enthält, wer die enthaltenen Daten erhalten soll und wie sie präsentiert werden sollen.
Aktualisiert die Frage. Sorry für die unpassende Beschreibung vorher. Ich komme zu Ihrer Antwort, aber das ist es, was ich zu fragen gedenke: "Warum brauchen wir ein' Bündel ', wenn wir bereits die gleichen Funktionen mit einer' Absicht 'zur Verfügung haben?" – ikartik90
Weil Sie manchmal eine Sammlung von Schlüssel-Wert-Paaren benötigen, die nicht die vordefinierte Bedeutung der Felder der Absicht haben. Sie benötigen oft eine Art Wörterbuch an einem Ort, an dem es nicht mit dem Starten einer Aktion verbunden ist." sowieso. –
Intent erleichtern die Kommunikation zwischen Komponenten. Intent ist die Nachricht, die zwischen Komponenten wie Aktivität übergeben wird. die intent.putExtra (Schlüssel, Wert) und intent.putExtra (Bundle)
Intent intent = new Intent();
intent.setClass(this, Other_Activity.class);
// intent.putExtra(key,value)
intent.putExtra("EXTRA_ID", "SOME DATAS");
startActivity(intent);
Mit Bundle verwendet werden können:
Bundle bundle=new Bundle();
bundle.put(key,value);
intent.putExtra(bundle);
startActivity(intent);
Rufen Sie das Bündel in eine andere Tätigkeit :
Bundle extras=getIntent().getExtras();
extras.getString(key);
Von der Quelle Absicht Klasse gibt es keinen Unterschied zwischen den beiden. Unten finden Sie Code aus Intent Klasse:
public Intent putExtra(String name, String value) {
if (mExtras == null) {
mExtras = new Bundle();
}
mExtras.putString(name, value);
return this;
}
Und
public Intent putExtras(Bundle extras) {
if (mExtras == null) {
mExtras = new Bundle();
}
mExtras.putAll(extras);
return this;
}
Ich denke also, einzige Unterschied ist, einfache Bedienung .. :) für 1. Sie müssen nicht erstellen dein Bündel ausdrücklich.
- 1. Was ist der Unterschied zwischen Aktivität und Absicht in Android?
- 2. Was ist der Unterschied zwischen einem URI und einer URL?
- 3. Was ist der Unterschied zwischen einem Algorithmus und einer Funktion?
- 4. Was ist der Unterschied zwischen einem Fehler und einer Ausnahme?
- 5. Was ist der Unterschied zwischen einem Benutzer und einer Rolle?
- 6. Was ist der Unterschied zwischen einer Schließung und einem Modul?
- 7. Was ist der Unterschied zwischen einem Ausdruck und einer Aussage?
- 8. Was ist der Unterschied zwischen einer Sprache und einem Framework?
- 9. Was ist der Unterschied zwischen einem Adapter und einer Netzwerkschnittstelle?
- 10. Was ist der Unterschied zwischen einer Ansicht und einem Stream?
- 11. Was ist der Unterschied zwischen einem Animator und einer Animation?
- 12. Was ist der Unterschied zwischen einem Workflow und einem Flowchart?
- 13. Was ist der Unterschied zwischen `==` und `ist`?
- 14. Was ist der Unterschied zwischen einem Index und einem Fremdschlüssel?
- 15. Was ist der Unterschied zwischen einem RoutedCommand und einem RoutedUICommand?
- 16. Was ist der Unterschied zwischen einem Muster und einem Pfad?
- 17. Was ist der Unterschied zwischen einem Primärschlüssel und einem Ersatzschlüssel?
- 18. Was ist der Unterschied zwischen einem Integrator und einem Tiefpassfilter?
- 19. Was ist der Unterschied zwischen einem Controller und einem Service?
- 20. Was ist der Unterschied zwischen einem Anwendungscontroller und einem Anwendungskontext?
- 21. Was ist der Unterschied zwischen einem Streamwriter und einem Binarywriter?
- 22. Was ist der Unterschied zwischen einem Key und einem KeySpec?
- 23. Was ist der Unterschied zwischen einem Domänenklassendiagramm und einem Designklassendiagramm?
- 24. Was ist der Unterschied zwischen einem Tupel und einem compressed_pair?
- 25. Was ist der Unterschied zwischen einem Klassendiagramm und einem Objektdiagramm?
- 26. Was ist der Unterschied zwischen einem Iterator und einem Generator?
- 27. Was ist der Unterschied zwischen einem Array und einem Objekt?
- 28. Was ist der Unterschied zwischen einem Tabellenindex und einem Ansichtsindex?
- 29. Was ist der Unterschied zwischen einem Algorithmus und einem Entwurfsmuster
- 30. Was ist der Unterschied zwischen einem Nanokern und einem Exokernel?
Lesen Sie diese http://stackoverflow.com/questions/4999991/what-isa-bundle-in-android-application#autocomment35012928 – user
Der obige Link fehlt der Punkt dieser Frage, die zu unterscheiden ist Datenübergabe mit Absicht und Datenübergabe mit einem Bundle. Wenn Sie so weit gekommen sind, haben Sie diesen Link bereits besucht. –