Package icyllis.modernui.lifecycle
Class LifecycleRegistry
java.lang.Object
icyllis.modernui.lifecycle.Lifecycle
icyllis.modernui.lifecycle.LifecycleRegistry
An implementation of
Lifecycle
that can handle multiple observers.
It is used by Fragments. You can also directly use it if you have a custom LifecycleOwner.
-
Nested Class Summary
Nested classes/interfaces inherited from class icyllis.modernui.lifecycle.Lifecycle
Lifecycle.Event, Lifecycle.State
-
Constructor Summary
ConstructorDescriptionLifecycleRegistry
(LifecycleOwner provider) Creates a new LifecycleRegistry for the given provider. -
Method Summary
Modifier and TypeMethodDescriptionvoid
addObserver
(LifecycleObserver observer) Adds a LifecycleObserver that will be notified when the LifecycleOwner changes state.Returns the current state of the Lifecycle.int
The number of observers.void
Sets the current state and notifies the observers.void
removeObserver
(LifecycleObserver observer) Removes the given observer from the observers list.void
setCurrentState
(Lifecycle.State state) Moves the Lifecycle to the given state and dispatches necessary events to the observers.
-
Constructor Details
-
LifecycleRegistry
Creates a new LifecycleRegistry for the given provider.You should usually create this inside your LifecycleOwner class's constructor and hold onto the same instance.
- Parameters:
provider
- The owner LifecycleOwner
-
-
Method Details
-
setCurrentState
Moves the Lifecycle to the given state and dispatches necessary events to the observers.- Parameters:
state
- new state
-
handleLifecycleEvent
Sets the current state and notifies the observers.Note that if the
currentState
is the same state as the last call to this method, calling this method has no effect.- Parameters:
event
- The event that was received
-
addObserver
Description copied from class:Lifecycle
Adds a LifecycleObserver that will be notified when the LifecycleOwner changes state.The given observer will be brought to the current state of the LifecycleOwner. For example, if the LifecycleOwner is in
Lifecycle.State.STARTED
state, the given observer will receiveLifecycle.Event.ON_CREATE
,Lifecycle.Event.ON_START
events.- Specified by:
addObserver
in classLifecycle
- Parameters:
observer
- The observer to notify.
-
removeObserver
Description copied from class:Lifecycle
Removes the given observer from the observers list.If this method is called while a state change is being dispatched,
- If the given observer has not yet received that event, it will not receive it.
- If the given observer has more than 1 method that observes the currently dispatched event and at least one of them received the event, all of them will receive the event and the removal will happen afterwards.
- Specified by:
removeObserver
in classLifecycle
- Parameters:
observer
- The observer to be removed.
-
getObserverCount
public int getObserverCount()The number of observers.- Returns:
- The number of observers.
-
getCurrentState
Description copied from class:Lifecycle
Returns the current state of the Lifecycle.- Specified by:
getCurrentState
in classLifecycle
- Returns:
- The current state of the Lifecycle.
-