gpt4 book ai didi

java - 如何进行循环截击

转载 作者:行者123 更新时间:2023-12-01 11:51:33 24 4
gpt4 key购买 nike

我的循环有问题。在我看来,这应该可行,但要经历一个循环。我必须检查可用性服务器,并且我没有其他想法。

服务器给出答案:

{"exist":true}

        do {
generateNumber = generate();
getExsistResponse = "http://skidd.herokuapp.com/exist/" + generateNumber;


final StringRequest request = new StringRequest(Request.Method.GET, getExsistResponse, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
existObject exist = new Gson().fromJson(response, existObject.class);
exist.getExist();
String abcd = exist.getExist();
Boolean boolean1 = Boolean.valueOf(abcd);

if (boolean1) {
Log.i("Info", "Pokój: " + abcd);
textView.setText("" + boolean1);
Toast.makeText(getApplicationContext(), response, Toast.LENGTH_SHORT).show();

} else {
textView.setText("" + boolean1);
Toast.makeText(getApplicationContext(), response, Toast.LENGTH_SHORT).show();
}

}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
//When an error
}
});
ConnectionManager.getInstance(this).add(request);
//Add the request to the RequestQueue.
}while (boolean1);

这是我的existObject类:

public class existObject {

@SerializedName("exist")
private String checkexist;

public String getExist() {
return checkexist;
}
public void getExist(String name) {
this.checkexist = name;
}

}

最佳答案

这种做法的逻辑并不健全。您假设do-while循环检查 boolean1 的值每次 Web 服务调用完成后。实际上,发生的情况是,即使在第一个 Web 服务调用完成之前,do-while循环已经进入循环的下一次迭代,并且 boolean1可能仍然是 false,因为第一个 Web 服务调用尚未完成。所以do-while循环中断。

认识到这一点:Web 服务调用是异步的。您根本无法预测完成需要多长时间,并且完成每个 Web 服务调用所需的时间始终会有所不同。您的do-while另一方面,循环是同步的:它不断创建 StringRequest对象并将它们添加到 RequestQueue ,并且这些请求不会立即执行,所以 boolean1 的值对于 do-while 的下一次迭代可能已正确设置,也可能未正确设置。循环。

您需要找到另一种方法来进行连续的网络调用,以便它们不以这种方式相互依赖。如果你还想这样做并依赖 boolean1 ,试试这个:

  • 创建 AsyncTask并执行HttpURLConnection请求(和不是 Volley Request )在其 doInBackground() ,并设置值的boolean1在那里。
  • 如果 boolean1 的值是 true ,然后创建一个新实例相同AsyncTaskonPostExecute()并调用execute()到启动下一个网络服务调用。

关于java - 如何进行循环截击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28782929/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com