如何等待android Volley响应(同步)?

时间:2017-12-25 05:47:36

标签: java android networking android-asynctask android-volley

我正在尝试在我的应用程序中生成房间代码,我希望能够检查数据库以确保生成的任何房间代码都是唯一的。
要做到这一点,我需要发出一个异步齐射请求并等待它的响应。我首先尝试使用RequestFuture,但我无法从主线程运行future.get()。然后我尝试使用回调...

public interface DataCallback {
    void onSuccess(String result);
    String getResponse();
}

其中callback.getResponse()应该返回凌空响应,但所有行为都是异步的(执行流程不等待回调)。
我也尝试过在AsyncTask中执行未来......

private class GenerateRoomCode extends AsyncTask<Void, Void, String> {

    @Override
    protected String doInBackground(Void... voids) {
        // Generate random string
        RequestFuture<String> future = RequestFuture.newFuture();
        StringRequest stringRequest = new StringRequest(Request.Method.GET, url, future, future);
        NetworkController.getInstance(this).addToRequestQueue(stringRequest);
        try {
            Log.d("Db", "" + future.get());
        } catch (Exception e) {
            Log.d("Db", "" + e.getMessage());
        }
        return roomCode;
    }
}

但是它也超时并且崩溃了应用程序 关于如何做到这一点的任何想法?

0 个答案:

没有答案