0


我需要用回调调用函数。
该方法要求服务器回答并将其返回给回调。
但我需要向服务器发送下一个请求。

如何将回调从内部方法重新返回到主回调?

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 项返回到列表并通过侦听器返回?
这不会等待添加内容代码并返回没有内容的 RSSItems 列表。

你能帮助我吗?

谢谢

4

1 回答 1

0

如果你确定你希望这个操作是同步的/阻塞的,你可以看看 wait 和 notify 方法,它们是每个 java 对象的一部分。在您的方法开始时,您可以简单地创建一个空列表。

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 仅由一个线程同时使用,因此您不需要任何同步。

于 2013-08-17T16:01:24.213 回答