Service Lifecycle
Services follow a simple three-phase lifecycle: init, event handling, and dispose.Lifecycle Flow
init()
Called once immediately afterservice.register(). Use it to set up initial state, start timers, and load persisted data:
init() can be async. The service is considered active immediately regardless of whether init’s promise has resolved.
onEvent(event, data)
Called for every event that passes through the overlay event bus while the service is active:event parameter is the full event name (e.g. 'activity:tip', 'session:update', 'chat:message').
dispose()
Called when the service is being shut down. Clean up timers, save state, release resources:When dispose() is called
| Trigger | What happens |
|---|---|
service.dispose(name) called | That service is disposed |
service.disposeAll() called | All services are disposed |
| Widget unloads | All services for that widget are disposed |
| Overlay disconnects | All services are disposed |
| Overlay reconnects | Services are re-initialized (init called again) |
Survival Rules
| Event | Service survives? |
|---|---|
Widget field change (setField) | Yes |
| Widget layout update | Yes |
| Widget unload | No — disposed |
| Overlay disconnect | No — disposed |
| Overlay reconnect | Re-initialized (new init) |