我正在等待(从 USSD 请求中)检索到一个值,以便我可以返回它 (getUSSD):
private String USSDResponse=null;
//this function executes sometime in the future and cannot have a return value
public void someFunction(String response){
USSDResponse=response;
}
public String getUSSD() {
while(USSDResponse==null){
//something to do ?!
}
return USSDResponse;
}
但我不知道我应该怎么做才能延迟循环直到我得到回复。
例如:循环内有 1 秒的计时器延迟,但这会停止一切!
我无法在另一种方法(接收响应的方法)中返回,所以我必须在这里做
这是这个问题的假设解决方案: TelephonyManager sendUssdRequest return USSD response
如果有更好的方法来解决这个问题,那就太好了。
答案 0 :(得分:0)
您可以使用 Java BlockingQueue。 http://tutorials.jenkov.com/java-util-concurrent/blockingqueue.html
生产者将是 USSDResponse 的回调。 消费者将是您等待 USSDResponse 的代码。