有一个FieldGroup,其数据源设置为SQLContainer,配置为使用带FreeformQuery的PostgreSQL数据库。另一个应用程序(不是webapp)每秒将数据写入数据库。
如何立即使用新数据更新FieldGroup?我尝试做的是设置一个ScheduledExecutorService,它每秒从数据库获取数据并将其设置为FieldGroup。但它似乎不起作用 - ScheduledExecutorService成功从数据库获取数据,但UI未更新。没有例外,UI只是不会改变。
以下是我的ScheduledExecutorService的代码:
ScheduledExecutorService ses = Executors.newSingleThreadScheduledExecutor();
ses.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
SQLContainer latestData = DatabaseHelper.getLatestData();
fieldGroup.setItemDataSource(latestData.getItem(id));
}
}, 0, 1, TimeUnit.SECONDS);
我还试图从ScheduledExecutorService Notification.show("hello");
显示通知
但它没有效果 - 不显示通知。那么,也许,不可能从主线程以外更改UI?
那么,再一次,如何每秒使用数据库中的新数据进行UI更新?是否有可能不是每秒都能获得数据,但是当数据库发生变化时?我还读过关于从服务器推送到客户端的问题 - 这有助于解决我的问题吗?