Ich mache eine Android App, die alle X Minuten überprüft, ob ein TCP/IP Server Socket auf meinem Computer geöffnet wurde. Wenn SO, es eine Verbindung und liest die Daten von ihm, wenn nicht, es wartet und versucht, wieder in X min verbinden ...Android Studio: Überprüfen, ob der Server-Socket eingeschaltet ist/alle X Minuten gehört
Der folgende Code funktioniert einmal beim Einschalten des Servers zuerst und dann der Client (manuell), aber ich kann den Client nicht dazu bringen, weiter zu überprüfen, ob die Server-Socket eingeschaltet ist/basierend auf der Zeit zuhört.Der asynchrone Ansatz funktioniert nicht, weil ich keine Verzögerung einfügen kann und ich kann den Handler-Ansatz nicht zum Laufen bringen.
CheckserversocketeveryXmin.java
public class AppListener extends Async {
@Override
public void handleMessage(Message msg) {
final Handler h = new Handler();
final int delay = 5000; //milliseconds
h.postDelayed(new Runnable() {
public void run() {
try {
String msg_received = null;
System.out.println("LISTENING FOR LAST INSTALLED APP");
System.out.println("TRY");
Socket socket = new Socket("85.190.178.23", 5050);
// Get data sent through socket
DataInputStream DIS = new DataInputStream(socket.getInputStream());
System.out.println("DataInputStream Started");
// read data that got sent
msg_received = DIS.readUTF();
System.out.println("Message from server" + msg_received);
// Might not want to close socket, or only the first string will be sent and none after
socket.close();
} catch (Exception e) {
System.out.println("Did not receive string");
}
h.postDelayed(this, delay);
}
}, delay);
}
}
Jetzt kann ich das falsch sein takling, diesen Code in meine Hauptaktivität setzen, aus irgendeinem Grunde alle x Sekunden Trys, aber tut nie die Verbindung, wo, wie es hier macht die Verbindung einmal wenn ich die Verzögerung entferne.
Würde eine Endlosschleife in einem Async (ich weiß, das ist nicht technisch gut) und eine Wartezeit/Verzögerung in es ein guter Ansatz sein? Wenn dies der Fall ist, haben Sie Sie einen Zeiger haben :)
danke! Es half :) – Emil