我有一个android应用程序,目前可以打开一个webview活动。当它这样做时,它会启动一个异步调用,在webview中加载网页的同时下载一些数据。
一旦网页和数据都准备好了,我想把数据发送到网络视图。
我在找一个好的数据结构来做这个。目前我正在做这样的事情:
private String data;
private AtomicBoolean bothReady = new AtomicBoolean(false);
public void dataDownloaded(String data) {
this.data = data;
sendDataIfReady();
}
public void pageLoaded() {
sendDataIfReady();
}
private void sendDataIfReady() {
if (bothReady.getAndSet(true)) {
sendData(this.data);
}
}
这是一个简化版本,但这是它的要点。这感觉是一种笨拙的方式,我想知道java中是否有一种好的数据结构,它将准备好的数据排队,然后在页面准备好时发送,而不管哪个先完成(显然还处理竞争条件等)。
谢谢你的帮助。
1条答案
按热度按时间3mpgtkmj1#
对于异步请求,我建议您使用scheduledexecutorservice:
然后可以定义asyncnotice类:
然后你可以这样做:
或者
这将返回scheduledfuture,因此您甚至可以在将来取消它。