Java 如何跟踪AsynchHttpClient请求
嗨,我想让你做点像这样的事。知道如何知道哪个请求对应于哪个项目吗Java 如何跟踪AsynchHttpClient请求,java,android,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 res
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>)
}
}
}
我想您可以在创建JsonHttpResponseHandler实例之前以及在onSuccess块中使用它之后“冻结”您的项目:
final <project type> project = projects.get(i);
就在邮递之前
如果没有,您可以创建一个映射,它可以在项目和请求之间保持一对一的对应关系
更新:
请不要说我无法测试此代码,因为我不知道您的项目结构
// 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);
}
我对地图解决方案更感兴趣。我怎么做?比如,我应该制作一个单独的JsonHttpResponseHandler并将其映射到一个项目吗?谢谢你@Anton,我写了自己处理处理程序的方法,但这个想法主要来自你的回答。