gpt4 book ai didi

java - Volley , 等待响应返回 wait until use flag

转载 作者:行者123 更新时间:2023-11-29 03:11:35 25 4
gpt4 key购买 nike

我必须响应截击请求的结果。但是因为它是异步的。我需要等待结果才能继续。如果我不这样做,我将得到空对象。

如何设置标志并等待标志关闭。

 categoryslashid = new JSONObject[Category_IDs.size()];//size of the list containing all categories   

taskfinished = new boolean[Category_IDs.size()];

//boolean is initialized to false
//Request to category/{id} to get
for(int i= 0;i<Category_IDs.size();i++)
{ makevolleyrequesforCategorySlashID(Const.URL_FULL_STOREURL+Const.URL_PRODUCT_GET_CATEGORY_ID,i);
}
public void makevolleyrequesforCategorySlashID(URL,id)
{
//volley implementation
public void onResponseoverride
{
categoryslashid[i]=response;
taskfinished[i]=true;
}

}

现在我必须在完成任务中的所有 boolean 值变为真后继续。

public  boolean areAllTrue()
{

for(boolean b : taskfinished) if(!b) return false;
return true;
}

最佳答案

实现一个接口(interface),并在数据准备就绪时使用它进行回调。像这样:

public interface OnDownloadTaskCompleted {
public void onTaskCompleted(List<ofSomething> list, boolean error, String message);
}

然后您应该将此实例传递给您的请求并覆盖 onTaskCompleted()

private void downloadData(){

final DownloadUsingVolley downloader = new DownloadUsingVolley(getActivity());
downloader.retrieveData(new OnDownloadTaskCompleted() {
@Override
public void onTaskCompleted(List<ofSomething> list, boolean error, String message) {
//do something with your data
}
});
}

我假设您有一个类,您在其中实现了 Volley (DownloadusingVolley),并且有一个方法调用它并自己发出请求 (retrieveData)。

retrieveData 可以这样实现:

private void retrieveData(String url, final OnDownloadTaskCompleted taskCompleted){
final JsonObjectRequest request = new JsonObjectRequest(url, null, new Response.Listener<JSONObject>(){
@Override
public void onResponse(JSONObject response) {
try {
//parse
taskCompleted.onTaskCompleted(result,false,null);
}catch (JSONException e){
taskCompleted.onTaskCompleted(0,true,e.getMessage());
}
}
},new Response.ErrorListener(){
@Override
public void onErrorResponse(VolleyError volleyError) {
taskCompleted.onTaskCompleted(0,true,volleyError.getMessage());
}
});
//adding request into the queue
ApplicationClass.getInstance().addToRequestQueue(request,"aTag");
}

在这里你可以找到一个关于 volley 的很好的教程: Asynchronous HTTP Requests in Android Using Volley

关于java - Volley , 等待响应返回 wait until use flag,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29058778/

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