我正在製作一個Android應用程序,用於每隔X分鐘檢查一次TCP/IP服務器套接字是否已在我的計算機上打開。如果是,它會連接並從中讀取數據,如果沒有,則等待並嘗試再次在X分鐘內連接...Android Studio:檢查服務器插座是否每隔X分鐘開啓/收聽
下面的代碼在我首先打開服務器然後客戶端時運行一次(手動),但我無法讓客戶端根據時間繼續檢查服務器套接字是否打開/收聽。異步方法將無法正常工作,因爲我不能拖延它,並且無法使Handler方法正常工作。
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);
}
}
現在我可以takling這種錯誤,把這個代碼放到我的主要活動,由於某種原因,改掉每x秒,但從來沒有在那裏這裏不連接它如果我刪除了延遲,則連接一次。
會在一個異步(我知道這不是技術上很好)和一個等待/延遲是一個好方法無限循環?如果是這樣,做任何你有一個指針:)
謝謝!它幫助:) – Emil