1. Rowenta, 10.01.2019 #1
    Rowenta

    Rowenta Threadstarter Neuer Benutzer

    Hallo zusammen,

    ich habe eine App entwickelt, welche einen TCP Socket Server startet, sobald die App geöffnet wird.
    Dies funktioniert auch ohne Probleme, solange die Activity vom Lifecycle nicht destroyed wird.

    Meine Frage:
    Kann mir jemand sagen, welche Werte ich mithilfe der Onsaveinstancestate Methode übergeben muss, um den TCP Socket Server bei einem Activitywechsel, etc. weiterhin am Leben zu erhalten?

    Normale Datentypen: String, int,... kann ich ohne weiteres mit dieser Methode übergeben, doch ich finde nicht heraus wie ich z.b. den Datentyp Socket übergeben kann...

    Vielen Dank im Voraus!

    Viele Grüße
     
  2. swa00, 10.01.2019 #2
    swa00

    swa00 Moderator Team-Mitglied

    Hallo Rowenta,

    was spricht denn gegen eine ausgelagerte eigene SingleTon, die deine TCP Verbindung handelt und mittels Listener deine Daten an die verschiedene Activities gibt.

    Die Übergabe eines Sockets erscheint mir da eher die schlechteste Variante.
     
  3. Rowenta, 11.01.2019 #3
    Rowenta

    Rowenta Threadstarter Neuer Benutzer

    Hallo swa00,

    Vielen Dank das hört sich interessant an!
    Mit dem Auslagern von code und auch mit einer Singleton hab ich mich noch nicht befasst.
    Läuft dieser Code dann nicht im Lifecycle?
     
  4. swa00, 11.01.2019 #4
    swa00

    swa00 Moderator Team-Mitglied

    Alles läuft im LifeCycle , aber das "Problem" was du hast ist nicht der LifeCycle sondern dein Verständnis vom Progammaufbau.
    Ich würde dir an dieser Stelle anraten , dich erst mit den Grundlagen auseinander zu setzen ,
    bevor du so etwas recht "fortgeschrittenes umsetzt.

    Das ,was ich Dir oben empfohlen habe ist eigentlich die Basis - die sollte erst sitzen
     
  5. jogimuc, 11.01.2019 #5
    jogimuc

    jogimuc Erfahrener Benutzer

    Hi mit dem ausgelagerten Code als Singelton ist das so.

    Du holst ja in der ersten Activity eine Instanz deiner Klasse TCP-Socket . Ist diese noch nicht erstellt macht das die Sinelton Klasse selber und gibt dir die Instanz zurück.

    Nun ist es bei Singelton so das du nicht selber die Instanz mit new erstellst sonder dir ich sage mal die Instanz dir von der Klasse selber zurückgeben läst.
    Da es bei Singelton nur eine Instanz einer Klasse geben kann.
    Bekommst du auch in der neuen Activity die gleiche Instanz auf deine Klasse TCP-Socket und kannst somit auf die gleichen Variablen und Inhalte zugreifen, wie in der ersten Activity.

    Du brauchst somit das Socket nicht übergeben denn du hast es ja in der Klasse Gespeichert.

    Auch ein Vorteil ist das du den Code nicht doppelt schreiben musst . Du kannst zb. eine Methode zum senden von Daten in der Klasse haben und in jeder Activity nutzen über die Instanz. Ohne ausgelagerten Code müsstest du ja in jeder Activity den Code neu schreiben.

    Muster: Java: Singleton – Wikibooks, Sammlung freier Lehr-, Sach- und Fachbücher
     
    Zuletzt bearbeitet: 11.01.2019
    swa00 bedankt sich.
  6. markus.tullius, 23.01.2019 #6
    markus.tullius

    markus.tullius Android-Lexikon

    Singelton ist eher bei Android ein Antpatter. Das liegt daran das die Activitys in einen eigenen Threads eingebettet sind. Das ist auch einer der Gründe, warum Android soetwas wie der Lifecycle hat.

    Das zweite Problem, welches ich sehe ist der offene TCP-Socket. Dafür muss das WLAN-Modul des Handy immer im activen Modus sein, Dies leert den Akku sehr schnell.

    Meine Frage, die ich hätte, brauchst du wirklich eine permanenten offen TCP-Socket? Wenn du einfach nur Message austauschen willst, bietet sich zum Beispiel auch Websockets an.
    Learn to use WebSockets on Android with OkHttp – Sylvain Saurel – Medium
     
Die Seite wird geladen...
Ähnliche Themen Forum Datum
Kein Menübutton unter Android 8? Android App Entwicklung Mittwoch um 12:08 Uhr
Android Studio Gradle Problem Android App Entwicklung 27.02.2019
Datenbank mit Kundendaten Android App Entwicklung 13.02.2019
Android playstore pusblishing: no supported devices Android App Entwicklung 11.02.2019
onStop() ist ja nicht gleich onStop() Android App Entwicklung 29.01.2019
<a href="tel: ..." & <a href="mailto: ..." in Android Sudio webview Android App Entwicklung 29.01.2019
Theme Änderung - Android Studio Android App Entwicklung 25.01.2019
App funktioniert unter Android 7 und höher aber nicht drunter, ich verzweifel Android App Entwicklung 07.01.2019
Kommunikation mit Advatange Database Server Android App Entwicklung 29.11.2018
org.w3c.dom.Element - Neues Element hinzufügen Android App Entwicklung 27.11.2018
Du betrachtest das Thema "Android lifecycle: Onsaveinstancestate bei TCP Socket Server" im Forum "Android App Entwicklung",
  1. Android-Hilfe.de verwendet Cookies um Inhalte zu personalisieren und dir den bestmöglichen Service zu gewährleisten. Wenn du auf der Seite weitersurfst stimmst du der Cookie-Nutzung zu.  Ich stimme zu.