Firestorm-
Lt. Commander
- Registriert
- Okt. 2006
- Beiträge
- 2.015
Hallo zusammen,
ich benötige einen Rat...
Ausgangslage:
Es besteht ein Server der, mit TCP-IP Sockets mit Clients kommuniziert. Dabei nutzt er ein ganz bestimmtes Protokoll, welches textbasiert ist und als Bytestrom, nicht als Zeichenstrom übertragen wird. Der/die Client ist eine Android App Version 4.1 oder höher. Logischerweise implementieret der Client ebenso das Protokoll und nutzt dabei auch TCP-IP Sockets. Der Client als solches ist bis auf die Views/Acitivites noch nicht umgesetzt, da ich mir nicht wirklich sicher bin was besser ist: Ich benötige ein Konzept, mit dem ich Nachrichten sowohl vom Client schicken als auch auf dem Client vom Server empfangen kann. Abhängig davon, was in einer Nachricht vom Server steht, sollen die Activties mit Inhalt gefüllt werden. Beispielsweise startet die App mit einem Login. Der User gibt die Daten an, klickt auf Anmelden. Jetzt sollen die Daten zum Server übertragen werden, der Login auf dem Server ausgeführt werden und sofern erfolgreich, eine Statusmeldung zurück an den Client geschickt werden, der darauf wartet, diese zu empfangen. Jetzt kommt die Unterscheidung: Wenn in der Statusmeldung steht, dass der Login erfolgreich war, soll mit einem Intent die neue Activity geladen werden, wenn nicht, irgendeine grafische Ausgabe erscheinen, die den User darüber informiert, dass der Login fehlgeschlagen ist.
Wie würdet ihr das umsetzen? - Ein Service brauche ich nicht, da die App nicht länger laufen soll, wenn sie minimiert ist. Idealerweise soll dann die Connection "gepaused" werden. Deshalb würde ich ein Singleton nehmen, welcher sich eine Connection hält, die solange sie läuft vom InputStream liest. Problem daran: Ich kann den Thread nicht ohne weiteres starten, da er Bestandteil des UI-Threads ist und damit bad practice wäre. Wäre also ein Einsatz von AsyncTasks sinnvoll hier? - Wenn ja, hättet ihr ein Codebeispiel, bei dem ich eine Connection über mehrere Activities mit mehreren AsyncTasks nutzen könnte?
Vielleicht bin ich auch voll auf dem Holzweg, aber ich frage mich wie Beispielsweise Apps wie ImmoScout24 dies umgesetzt haben. Anfangs wird vom User ja auch nur ein Formular mit Suchkriterien ausgefüllt und dann der Request zum Server gesendet und eben so lange gewartet, bis das Ergebnis (zumindest die Texte) ausgeliefert sind und erst dann wird der Content auf der Activity wirklich sichtbar. Ist das auch mit AsyncTasks umgesetzt?
Vielen Dank für jegliche Hilfe im Voraus.
Grüße
ich benötige einen Rat...
Ausgangslage:
Es besteht ein Server der, mit TCP-IP Sockets mit Clients kommuniziert. Dabei nutzt er ein ganz bestimmtes Protokoll, welches textbasiert ist und als Bytestrom, nicht als Zeichenstrom übertragen wird. Der/die Client ist eine Android App Version 4.1 oder höher. Logischerweise implementieret der Client ebenso das Protokoll und nutzt dabei auch TCP-IP Sockets. Der Client als solches ist bis auf die Views/Acitivites noch nicht umgesetzt, da ich mir nicht wirklich sicher bin was besser ist: Ich benötige ein Konzept, mit dem ich Nachrichten sowohl vom Client schicken als auch auf dem Client vom Server empfangen kann. Abhängig davon, was in einer Nachricht vom Server steht, sollen die Activties mit Inhalt gefüllt werden. Beispielsweise startet die App mit einem Login. Der User gibt die Daten an, klickt auf Anmelden. Jetzt sollen die Daten zum Server übertragen werden, der Login auf dem Server ausgeführt werden und sofern erfolgreich, eine Statusmeldung zurück an den Client geschickt werden, der darauf wartet, diese zu empfangen. Jetzt kommt die Unterscheidung: Wenn in der Statusmeldung steht, dass der Login erfolgreich war, soll mit einem Intent die neue Activity geladen werden, wenn nicht, irgendeine grafische Ausgabe erscheinen, die den User darüber informiert, dass der Login fehlgeschlagen ist.
Wie würdet ihr das umsetzen? - Ein Service brauche ich nicht, da die App nicht länger laufen soll, wenn sie minimiert ist. Idealerweise soll dann die Connection "gepaused" werden. Deshalb würde ich ein Singleton nehmen, welcher sich eine Connection hält, die solange sie läuft vom InputStream liest. Problem daran: Ich kann den Thread nicht ohne weiteres starten, da er Bestandteil des UI-Threads ist und damit bad practice wäre. Wäre also ein Einsatz von AsyncTasks sinnvoll hier? - Wenn ja, hättet ihr ein Codebeispiel, bei dem ich eine Connection über mehrere Activities mit mehreren AsyncTasks nutzen könnte?
Vielleicht bin ich auch voll auf dem Holzweg, aber ich frage mich wie Beispielsweise Apps wie ImmoScout24 dies umgesetzt haben. Anfangs wird vom User ja auch nur ein Formular mit Suchkriterien ausgefüllt und dann der Request zum Server gesendet und eben so lange gewartet, bis das Ergebnis (zumindest die Texte) ausgeliefert sind und erst dann wird der Content auf der Activity wirklich sichtbar. Ist das auch mit AsyncTasks umgesetzt?
Vielen Dank für jegliche Hilfe im Voraus.
Grüße