将字符串发送到服务器并接收未更新的响应

时间:2014-05-09 09:21:36

标签: java android android-asynctask

我正在用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?

1 个答案:

答案 0 :(得分:1)

从AsyncSendToServer的onPostExecute执行AsyncReceiveFromServer。 这样,您绝对可以确定发送已完成。