I think the overall idea of activities is that they are short-lived
instances, so they're effectively "lazily created" (actually, a new
instance is created each time one is needed) and they don't need to be
"awoken" because if they're not currently in use they're already
"dead" and garbage collected.
The ActivityManager (actually its associated ActivityMapper) will
decide whether a particular activity is needed (and then instantiate
it, possibly going through a GWT.runAsync for code splitting); the
activity will listen to events its interested in *during its lifetime*
(e.g. whether some object has changed or has been added or deleted, so
it can update its view); but when it's done (stopped or cancelled),
it's simply thrown away (the event bus passed to the start() method is
a ResettableEventBus so all handlers have been automatically
unregistered for you, which as a side effect allows the activity to be
garbage collected).
This is the (AIUI) intended use, but nothing forces you to write such
short-lived instances: you can very well use singletons, but then
you'll have the additional task of maintaining state between
"runs" (start/stop or start/cancel), in which case your activity can
listen to events from the event bus after being stopped/cancelled
(just use the "real" event bus instead of the ResettableEventBus
passed to the start() method); but it won't "ask to be revealed":
navigation is handled at another layer, triggered on the
PlaceController and handled by ActivityManagers.