【发布时间】:2016-04-16 18:07:15
【问题描述】:
我正在做套接字编程。每当用户触摸屏幕时,触摸位置都会发送到我的服务器。但有时,将这些数据从我的客户端 android 应用程序发送到我的服务器时会出现长达 5 秒的延迟。我的问题是,当用户触摸屏幕时,是否有可能因为大量的 AsyncTasks 正在执行,所以延迟可能是由于这个原因吗?如果不是这种情况,我还会附上服务器端代码。这是我的客户端代码:
编辑:更新代码
@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 秒的延迟。有什么解决办法吗?另外,我猜这个间隔必须根据每个设备设置?
【问题讨论】:
-
你为什么总是关闭套接字?
-
我刚找了一个例子,照着做了。我是套接字编程的初学者。
标签: android sockets android-asynctask