Take a look
at: https://groups.google.com/d/topic/google-web-toolkit/OsDpLtBoTQo/discussion
I had nearly the same problem. Short version: If you have non singleton
activities they will be restarted for every PlaceChangeEvent. If you want to
avoid this you need to cache your Activity. But once you cache your activity
if lives longer than its place it is started for. Thus the activity has to
be notified once a PlaceChangeEvent occurs for the same place but with
different internal state. This can be done by a method defined in every
activity through a custom activity interface that extends Activity (e.g.
setPlace() called by your activity caching code) or by letting the activity
itself listen for PlaceChangeEvent and let the activity decide if it needs
to update or not. That way you can always use placeController.goTo(new
Place(new state)) to update the URL according to the current app state.
First I have used myActivity.setPlace() to notify the activity as I need
this method anyways because of GIN. But that way you need an extra flag in
your activity so you can decide if the activity is already running and you
have to update it or if its not yet started and you can do the work once its
started. So basically
public void setPlace(...) {
//storing place information in activity variables
//....
//update activity/view
if(isRunning) {
doUpdate();
}
}
public void start(...) {
running = true;
doUpdate();
}
So I prefer it to let the activity listen for PlaceChangeEvents. That way
you won't need the extra boolean flag.
-- J.
--
You received this message because you are subscribed to the Google Groups
"Google Web Toolkit" group.
To view this discussion on the web visit
https://groups.google.com/d/msg/google-web-toolkit/-/3AEwXwxdBs4J.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/google-web-toolkit?hl=en.