我正在尝试在我的应用程序中生成房间代码,我希望能够检查数据库以确保生成的任何房间代码都是唯一的。
要做到这一点,我需要发出一个异步齐射请求并等待它的响应。我首先尝试使用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;
}
}
但是它也超时并且崩溃了应用程序 关于如何做到这一点的任何想法?