等待函数完成,直到回调将到

时间:2018-12-10 15:41:02

标签: java android asynchronous callback async-await

我正在尝试实现一种机制,该机制将使我等待函数完成(尤其是返回调用),直到我将在接收器内部得到一些响应为止。接收器正在等待来自API的某些调用或其他耗时的操作的响应。

我试图做一个在布尔标志(易失性)上运行的while循环,该循环应该在接收器中更改,但是结果是循环一直运行,并且该标志永不改变。

我还尝试实现了一个等待通知机制,但是,等待函数也“阻塞”了接收者以调用通知。

编辑:我也尝试使用BlockingQueue,但是这里也没有运气。

我在实现中附加了一些示例代码。

public String getRemoteInfo() {
    getInfo();
    while (!finished){
        Uninterruptibles.sleepUninterruptibly(200, TimeUnit.MILLISECONDS);
    }
    return globalResult;
}

private void getInfo(){
    service.getInfo(this); //"this" is an implementation of receiver
}

@Override
public void infoReceived(String result) {
    globalResult = result;
    finished = true;
}

1 个答案:

答案 0 :(得分:0)

这是一种可怕的方式-像轮询那样睡觉,这对性能,电池寿命等都有不利影响。正确的做法是使用信号量,并让线程等待等待信号量,然后在后台执行的功能会在信号量完成后向信号量发出信号。

请注意,您永远不要在UI线程上这样等待,因为您的应用在等待时将无响应。