我的CustomerActivity
班级恰好也是 MVP 意义上的演讲者。为了响应用户的操作,调用以下代码:
context.update(customer).fire(new Receiver<CustomerProxy>() {
public void onSuccess(CustomerProxy response) {
// set the view according to the response
}
});
当上面的代码执行时,会发生两件事:
我收到了客户的更新副本,我可以用它刷新视图的状态
触发 EntityProxyChange 事件
CustomerActivity
监听 EntityProxyChange 事件,因为其他活动也会更改客户记录,我想保持CustomerActivity
最新。
EntityProxyChange.registerForProxyType(eventBus, CustomerProxy.class,
new EntityProxyChange.Handler<CustomerProxy>() {
public void onProxyChange(EntityProxyChange<CustomerProxy> event) {
fetchCustomer(event.getProxyId());
// ...but what if it was me that made the change?
}
});
由于该update
方法已经返回了一个最新的客户,我不需要在处理EntityProxyChange
;期间再次获取客户。如果可以避免的话,我不想承担再次调用服务器的费用。
我希望EntityProxyChange
该类能够为我提供实体的版本号,我可以将其与我缓存的客户版本进行比较。没有骰子。
我想我可以设置某种inTheMiddleOfAnUpdateOperation
标志,并在获取客户之前检查它。人们正在这样做吗?这个想法让我有点作呕。您能否建议一种更好的方法来编写一个监听更改并对相同实体类型进行更改的活动?