如何跟踪AsynchHttpClient请求

时间:2017-05-18 15:19:04

标签: java android

您好,我试图做这样的事情。知道如何知道哪个请求对应哪个项目?

for (int i=0; i<projects.size(); i++) {
    post("api/Project/getProductionTime", rp, new JsonHttpResponseHandler() {
        @Override
        public void onSuccess(int statusCode, Header[] headers, JSONObject response)
        {
            projects.get(i).setAmount(<things from response>)
        }
    }
}

1 个答案:

答案 0 :(得分:1)

我想你可以在创建JsonHttpResponseHandler的实例之前“冻结”你的项目,并在onSuccess块中使用它之后:

final <project type> project = projects.get(i);

在post()之前。

如果没有,您可以创建一个可以在项目和请求之间保持一对一的地图。

<强>更新 请注意,我无法测试此代码,因为我不知道您的项目结构。

// I assume that both Project and MyJsonHttpResponseHandler has hashCode() and equals() methods
// MyJsonHttpResponseHandler is a subcalss of JsonHttpResponseHandler with hashCode() and equals() methods
private final ConcurrentHashMap<MyJsonHttpResponseHandler, Project> map = new ConcurrentHashMap<>();
...
for (int i=0; i<projects.size(); i++) {
    MyJsonHttpResponseHandler handler = new MyJsonHttpResponseHandler() {
        @Override
        public void onSuccess(int statusCode, Header[] headers, JSONObject response)
        {
            Project project = map.get(this);
            project.setAmount(<things from response>);

            map.remove(this);
        }
    };
    map.put(handler, projects.get(i));
    post("api/Project/getProductionTime", rp, handler);
}