我正在用Java编写Android应用程序,服务器端也用Java编写。 连接是通过套接字。要将字符串发送到服务器,我使用asyncTask,如下所示:
public static void send(String content) throws IOException {
mConnectionHandler.new AsyncSendToServer().execute(content);
}
private class AsyncSendToServer extends AsyncTask<String, Void, Void> {
@Override
protected Void doInBackground(String... params) {
out.println(params[0]);
return null;
}
}
现在服务器的响应完成如下:
public static String receive() {
mConnectionHandler.new AsyncReceiveFromServer().execute();
return serverResponse;
}
private class AsyncReceiveFromServer extends AsyncTask<Void, Void, String> {
@Override
protected String doInBackground(Void... params) {
String result = null;
try {
result = in.readLine();
} catch (IOException e) {
e.printStackTrace();
}
return result;
}
protected void onPostExecute(String result) {
serverResponse = result;
}
}
因为这些方法是异步的,所以serverResponse在receive()中没有得到适当的值。当我执行AsyncReceiveFromServer时,receive()在asyncTask中更新之前返回serverResponse的值。我该怎么做才能发送更新的serverResponse?
答案 0 :(得分:1)
从AsyncSendToServer的onPostExecute执行AsyncReceiveFromServer。 这样,您绝对可以确定发送已完成。