我需要用回调来调用该函数
该方法要求服务器回答并将其返回给回调
但是我需要向服务器发送下一个请求。
如何将内部方法的回调重新返回到主回调?
void getListOfRSSItems(final String url, final ResponseListener listener) {
Requester.send(url, new Requester.RequestResponseListener() {
@Override
public void onRequestResponse(HttpResponse response) {
ArrayList<RSSItem> list = getListFromResponse(response);
for (int i = 0; i < list.size(); i++) {
Requester.send(list.get(i).link, new Requester.RequestResponseListener() {
@Override
public void onRequestResponse(HttpResponse response2) {
// add content to rss item
}
});
list.set(i, // returned rss item);
}
listener.onResponse(list);
}
});
}
如何将rss项返回到列表并通过监听器返回? 这不等待添加内容代码并返回没有内容的RSSItem列表。
你能帮助我吗?
谢谢
答案 0 :(得分:0)
如果您确定希望此操作是同步/阻塞,则可以查看作为每个java Object一部分的wait和notify方法。在方法开始时,您只需创建一个空列表。
final List<RSSItem> rssItems = new ArrayList<RSSItem>();
....
@Override
public void onRequestResponse(HttpResponse response2) {
this.myClass.rssItems.add(...); // fill your list
YourClass.this.rssItems.notify(); // when finished wake blocking thread
}
....
rssItems.wait(5000); // waits until rssItems have been filled or 5s have passed.
// your program should be able to tell the difference.
由于rssItems仅由一个线程同时使用,因此您不需要任何同步。