BlockingQueue an eine Activity übergeben

  • 8 Antworten
  • Neuester Beitrag
Diskutiere BlockingQueue an eine Activity übergeben im Android App Entwicklung im Bereich Betriebssysteme & Apps.
M

maksimilian

Ambitioniertes Mitglied
Hallo Ihr,

wie kann (mit putExtra ?) eine BlockingQueue an eine Activity übergeben werden und wie sieht das aus ?
In der Activity soll ein Aktionscode in die Queue eingetragen werden, welche in einem von der MainActivity erzeugten Thread abgearbeitet (und noch aus anderen Quellen gespeist) wird.

maksimilian
 
J

jogimuc

Stammgast
Dann schaue dir mal das Prinzip von Singelton an. Ist auch in dem von dir genannten Kurs. Oder auch das Thema static Variablen oder static Klassen.

Thema Übergabe von Objekten würde ich nicht machen.
Beitrag automatisch zusammengefügt:

Oder du schaust dir das neuere Viewmodel an. Was Google in den Lifecycle der App integriert hat.
 
Zuletzt bearbeitet:
M

maksimilian

Ambitioniertes Mitglied
I krieg's nicht hin, hab's mit Parcelable versucht. Ist aber auch nicht notwendig. Es macht in meinem Fall eigentlich keinen Sinn die Queue zu übergeben. Die Activity kann den Aktionscode als Ergebnis an die MainActivity zurückgeben, und diese versorgt die Queue.

Aber prinzipiell würde mich schon interessieren, wie komplexere Daten an die Activity übergeben werden können.
 
J

jogimuc

Stammgast
Wie ich schon sagte werden sich die meisten für Sigletone oder Viewmodel entscheiden.
Nicht für das Parcelable.
 
J

jogimuc

Stammgast
Die Queue würde ich auch nicht übergeben. Sondern in einer eigenen Klasse halten und das als Singleton. Singleton davon kann es nur eine Instanz geben. Die du dir in jeder Activity Klasse hollen kannst und so darauf zugreifen kannst.

In Java kannst du keine Referenz Pointer wie in C oder auch andern Sprachen übergeben.
 
M

maksimilian

Ambitioniertes Mitglied
Ja, nochmal danke!
 
D

deek

Stammgast
maksimilian schrieb:
I krieg's nicht hin, hab's mit Parcelable versucht. Ist aber auch nicht notwendig. Es macht in meinem Fall eigentlich keinen Sinn die Queue zu übergeben. Die Activity kann den Aktionscode als Ergebnis an die MainActivity zurückgeben, und diese versorgt die Queue.

Aber prinzipiell würde mich schon interessieren, wie komplexere Daten an die Activity übergeben werden können.
Parcelable, und alles andere was man in ein Intent packt, wird für die Übergabe an eine andere Activity serialisiert und deserialisiert. Das muss einem bewusst sein. D.h. dass man niemals dieselbe Instanz in der Hand hat, sondern immer eine Kopie. Dementsprechend werden Änderungen nicht an den Aufrufenden zurück propagiert.

Singleton empfehle ich eigentlich nur für erfahrene Programmierer, aber inzwischen gibt es mit ViewModel wie schon erwähnt ja gute Möglichkeiten State zwischen Komponenten shared zu machen.

Ich weiß, dass du dein Problem als gelöst ansiehst, aber ich wollte nur ergänzen WARUM das nicht geht.

jogimuc schrieb:
In Java kannst du keine Referenz Pointer wie in C oder auch andern Sprachen übergeben.
Äh doch. Grundsätzlich sind normale Aufrufe in Java call-by-reference. (Außer primitive Typen, dort call-by-value) D.h wenn ich in einer Methode eine Liste bekomme und diese verändere sieht auch der Aufrufer meine Änderungen.
In diesem speziellen Fall hängt halt noch eine Serialisierung dazwischen, deswegen geht das hier nicht, aber Java an sich ist call-by-reference.
 
J

jogimuc

Stammgast
@deek
aber Java an sich ist call-by-reference.
Nein ist es nicht
Es wird beim Aufruf eine Kopie der Referenz auf das selbe Objekt im Speicher erstellt und übergeben. Das ist immer noch Call by Value.
Beide refs zeigen auf das gleiche Objekt im heap der jvm.

Bei Call by Referenz würde keine Kopie der ref erstellt und übergeben.
 
Zuletzt bearbeitet:
D

deek

Stammgast
mea culpa, offiziell hast du Recht, habs nachgelesen. Aber von der Sache her bzgl. Übergeben von Parametern ändert sich nichts durch die Terminologie. Danke, wieder was gelernt.
 
Ähnliche Themen - BlockingQueue an eine Activity übergeben Antworten Datum
15
5