Hallo Leute,
ich habe einen Java-Server und einen Java-Client. Der Client ist eine Android-App auf meinem Handy. Es funktioniert auch alles soweit, nun wollte ich die App “schön” machen und eine Timeoutabfrage einbauen.
Heißt: Wenn man auf verbinden drückt, kommt dieser Kreis, der sich dreht und darunter steht: “Verbindung wird gesucht…”
Folgenden Code habe ich mir überlegt:
int i = 0;
do {
try {
Socket s = new Socket("hier die Server ip", 5000);
System.out.println("Verbindung");
i = 6;
} catch(Exception e) {
System.out.println("Verbindung Server Exception" + e);
i = i + 1;
}
System.out.println(i);
} while(i < 4);
if(i == 6) {
System.out.println("Weitere Operationen");
} else {
System.out.println("Keine Verbindung gefunden");
}
Findet er die Verbindung, verlässt er die Schleife und kann Daten o.ä. an den Server schicken.
Findet er keinen Server, wird ein Timeout mitgezählt (hier 4). Kommt es zum Timeout, wird die Schleife verlassen und es kommt zu einem Fehler.
Nun tritt ein total blödes (unschönes) Problem auf.
In meiner Main klicke ich auf einen Button “verbinden”, ein Intent leitet mich weiter auf ein neues Layout. Nun wird mein Verbindungscode ausgeführt, bevor die GUI sich aufbauen kann. D.h. man starrt solange auf einen schwarzen Bildschirm bis die Schleife zu Ende durchgelaufen ist. Das ist natürlich mist.
Ich habe es auch schon probiert, den Verbindungscode in einem Thread auszulagern, aber da tritt daselbe Problem auf.
Hat jmd. Ideen?
Andere Frage nebenbei: Ich habe nach so eine Timeout-Abfrage gegoogelt. Konnte aber nichts Gescheites finden. Ist mein Vorgehen geschickt oder gibt es deutlich einfacherer Lösungen?
Gruß
Kuzdu