我在做套接字編程。無論何時用戶觸摸屏幕,觸摸位置都會發送到我的服務器。但有時,從我的客戶端Android應用程序發送到我的服務器的數據有5秒的延遲。我的問題是,有任何可能性,因爲當用戶觸摸屏幕時正在執行大量的AsyncTasks ,所以可能是由於這個延遲?如果情況並非如此,我還會附加服務器端代碼。這裏是我的客戶端代碼:Android Socket編程:用於發送實時數據的AsyncTask
編輯:更新代碼
@Override
public boolean onTouchEvent(MotionEvent event) {
long curTime = System.currentTimeMillis();
if ((curTime - lastUpdate) > 50) {
lastUpdate = curTime;
int x = (int) event.getX();
int y = (int) event.getY();
String msg = x + " " + y + " " + "<EOF>";
new Client().execute(msg);
}
return false;
}
private class Client extends AsyncTask<String, Void, String> {
protected String doInBackground(String... messages) {
Socket socket;
try {
socket = new Socket(ip, 1755);
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
out.println(messages[0]);
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
return "";
}
}
現在,我送觸摸位置每隔50毫秒之後。但其對服務器端的影響是滯後的。如果我將間隔設置爲小於50,比如20,那麼同樣的問題仍然存在。也就是說,有5秒的延遲。任何解決方案另外,我想這個間隔必須根據每個設備來設置?
爲什麼你總是關閉套接字? – Krish
我剛剛找到一個例子,並遵循它。我是套接字編程的初學者。 –