如何同步执行RoboSpice请求?可能吗?我想在IntentService中使用RoboSpice。

编辑:

有时需要同步执行某些操作,例如在服役。在我最近的项目中,我必须对一些不同类型的请求进行排队,并且希望将IntentService与RoboSpice一起使用。就我而言,当我执行不同的请求时,我需要等待request1的结果,然后将数据从其中传递给request2并执行它。

我想要某种批处理请求队列。可以说我们有两种类型的请求:request1request2request2需要通过request1获取的数据:


执行request1
等待
获取request1提取的数据并传递给request2
执行request2
等待
转到1。


我想使用IntentService(队列),但是由于异步而在启动请求后死了。

我认为使用侦听器或CountDownLatch并不是最好的方法。

最佳答案

正如Riccardo Ciovatti on the RoboSpice mailing list所建议的那样,对您的问题的直接答案是:

final CountDownLatch latch = new CountDownLatch(1);

final YourRequest request = new YourRequest();
spiceManager.execute(request, new RequestListener<YourResponse>() {

    @Override
    public void onRequestFailure(SpiceException spiceException) {
        latch.countDown();
    }

    @Override
    public void onRequestSuccess(YourResponse response) {
        latch.countDown();
    }
});

latch.await();


但这不是一个好习惯,除非它在后台线程上执行。异步处理是RoboSpice的基本功能。它使UI线程保持空闲状态。

关于robospice - 如何同步执行RoboSpice请求?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23243125/

10-10 08:36