私CustomerActivity
のクラスは、たまたま MVP の意味でプレゼンターでもあります。ユーザーによるアクションに応答して、次のコードが呼び出されます。
context.update(customer).fire(new Receiver<CustomerProxy>() {
public void onSuccess(CustomerProxy response) {
// set the view according to the response
}
});
上記のコードが実行されると、次の 2 つのことが起こります。
ビューの状態を更新できる Customer の更新されたコピーを受け取ります
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
メソッドは既に最新の Customer を返しているため、EntityProxyChange
. 回避できるのであれば、サーバーへの別の呼び出しのコストを負担したくありません。
EntityProxyChange
クラスがエンティティのバージョン番号を提供してくれることを期待していました。これは、キャッシュした顧客のバージョンと比較できます。サイコロはありません。
ある種のinTheMiddleOfAnUpdateOperation
フラグを設定して、顧客を取得する前に確認できると思います。それは人々がしていることですか?その考えは私をほんの少しギャグにさせます. 変更をリッスンし、同じエンティティ タイプに変更を加えるアクティビティを作成するためのより良い方法を提案できますか?