DiscreteActivity is an activity which occurs at a point in time.
The Listener protocol subscribes to changes in the system’s activity
state. Clients which care about the activity state of the system are
expected to implement this protocol and subscribe via Provider.WatchState.
OngoingActivity is an activity which has a definite start and end time.
The Provider protocol offers a subscription interface through
which clients can watch for changes in the system’s activity state.
State is an enumeration of the activity states the system may be in.