Android Activity mit mehreren Views "spliten"

droidStep

Mitglied
ich programmiere derzeit eine app in der zwei bluetoothhandys untereinander informationen austauschen.
dazu hab ich mehrere activitys mit zugehörigen Views erstellt. Jetzt ist mein problem, dass die Geräte in Activity A verbunden werden und ich bekomme einen BluetoothSocket mit dem ich daten versenden und empfangen kann allerdings brauche ich diesen socket in einer anderen Activity B. Ich habe im internet nichts dazu gefunden (per intent übergeben funktioniert nicht da das ja nur mit einfachen Datentypen geht). Falls mir da jemand weiterhelfen könnte wäre super!

eine alternative lösung wäre, wie in der überschrift schon beschrieben, einfach mehrere Views in einer Activity zu verwenden. Dann hab ich aber das problem, dass ich unmengen von Code in einer einzigen Activity hab. Kann ich diese Activity nicht irgenwie in seperate klassen "splitten" oder so damit ich den zu den einzelnen Views gehörigen Code seperat getrennt hab?

ich hoffe ich habe mein problem verständlich erklärt und bedanke mich schonmal für die antworten 🙂
 
Wäre eine Möglichkeit allerdings die schlechteste. (Per Fragments möglich, per eigenem Code der dann eine Klasse nimmt und daraus ein View-Objekt holt was du in deiner Host-Activity als View setzt, etc.)

Du würdest dir so die UI an die untere Schicht binden und das ohne Not. Ich würde die NW-Kommunikation, schon aus Performance-Gründen, in einen Service stecken. Dieser Service kann dann entweder per Binding oder per (Local)Broadcasts angesprochen werden und teilt dann Ergebnis seinerseits wiederum per Binding (Rückgabewert von Methoden) oder per Broadcasts mit.

Dann ist der Socket automatisch von jeder Activity in deiner App erreichbar und du kannst ohne dir groß Gedanken zu machen weitere Activities hinzufügen oder entfernen bei Bedarf.
 
Ist allerdings eine Pfuschlösung die am Lifecycle vorbeigeht.

wieso was is da der nachteil?
bzw was macht ne Application-class eigentlich genau und wofür verwendet man sie normalerweise?

is n service nur für die übergabe von nem BluetoothSocket nich n bisschen .. naja "verschwenderisch" ?ausserdem is des mit dem service so ne umweg-lösung und des mit der Application-class geht direkt

aber ich lass mich immerwieder gern belehren 😉
 
is n service nur für die übergabe von nem BluetoothSocket nich n bisschen .. naja "verschwenderisch" ?
Ja und Nein.
Ja: Du hast einen Service mehr.
Nein: Denn du müsstest dann ja in den Activities erst wieder Code um den Socket herum basteln der die asynchrone Kommunikation regelt. Die wäre dann zentral im Service. Es wäre dann auch egal welche Activity gerade offen ist. Ein asynchron laufende Thread kann nicht plötzlich fertig werden mit seiner Aktion nur um fest zu stellen, das es seine Activity etc. nicht mehr gibt.

Damit hast du schon mal eine ganze Fehlerklasse beseitigt und gleichzeitig den Code kompakter gemacht.
 
ich hab n paar tage nicht programmiert aber jetz hab ich des mit dem service ausprobiert und ich muss sagen das klappt ziemlich super und ist sehr praktisch großes DANKESCHÖN nochmal! 🙂
 

Zurück
Oben