2012-03-08 18 views
2

com.google.gwt.activity.shared.Activity#mayStopメソッドには、ほんのわずかなユースケースがあるのだろうかと思います。Activity.mayStop()はどれくらい意味がありますか?

  1. com.google.gwt.place.shared.PlaceController.Delegate#confirmは、ブロッキング一つであり、そのためにはコールバックを使用している、あなたは別のDelegateを使用することはできません。 GWTの人は常に、ユーザーのやりとりを非同期的に処理する必要があると言っているため、これがブロックされた方法で実装されている理由はわかりません。
  2. mayStopメソッドが常に呼び出されます。 ActivityManagerが同じActivityを返しても、UIは変更されません。したがって、ユーザーが変更を保存していない場合や、場所の変更によって実際に保存されていないデータが破棄された場合は、アクティビティを確認する必要があります。私は、この小切手はplaceController.goTo(new Place())に電話する前にもっと簡単にできると思います。

あなたはどう思いますか?

答えて

4
  1. http://code.google.com/p/google-web-toolkit/issues/detail?id=6228#c1TLを参照してください; DR:非同期処理は、あまりにも多くのエッジケース、バグ、混乱、そしてそれがどのように動作するかをするように異なるニーズ/要望をへの扉を開きます。

  2. goToを実行するアクティビティは、必ずしもチェックを行う必要があるアクティビティではありません。mayStop。その場合、goToを実行する前にチェックを行い(mayStopが返される状態に遷移する)、の変更がある別のアクティビティがある場合は、という結果になります確認がユーザーに求められます。
    mayStopのチェックではなく、PlaceChangeRequestEventを聞き取り、条件付きでsetWarningと電話することもできます。あなたがナビゲートしている場所にアクセスできるようにします。あなたのアクティビティと場所やアクティビティへのマッピングを結合します(例えば、リストのアクティビティ詳細の場所のデスクトップに表示されますが、モバイルには表示されません)。これはActivityMapperの責任です。
    また、ブラウザー(ブラウザーの履歴をナビゲートするユーザー)がナビゲーションを起動できることを忘れないでください。事は:ウェブ上では、ユーザーはコントロールしています。
    goToを実行してmayStopに頼って確認を求めるのは、おそらくもっと良い(単純な)でしょう。 (アクティビティは、が保存されていない変更がある場合に、goToをトリガーするボタン/リンクを無効にすることができるので、ナビゲーションは他のアクティビティによってのみトリガされる可能性があります)。

+0

答えをいただきありがとうございます。私は、ナビゲーションが、すなわち、バックボタンによってトリガーされるという点については考慮しませんでした。 – Peter

関連する問題