Documentation / dataflow / com.femastudios.dataflow.listen / LifecycleOwner
Go to reference

LifecycleOwner

interface LifecycleOwner

An object that implements LifecycleOwner can easily listen for Field changes, by calling listen.

In order to work, it's necessary to implement attachToLifecycle and detachFromLifecycle.

To simplify implementing this interface, you can extend MapLifecycleOwner instead

This class allows to listen Fields like this:

class FieldLabel: Label(), LifecycleOwner {
	...

	val textColor = mutableFieldOf(Color.RED)

	init {
		listen(textColor){ c ->
			super.setTextColor(c)
		}
	}

}

Properties

canSafelyUseStrongListeners

Whether or not listeners will be registered strongly to this LifecycleOwner. Defaults to false.

open val canSafelyUseStrongListeners: Boolean

startListenersAutomatically

Whether or not listeners will start automatically when calling listen.

open val startListenersAutomatically: Boolean

Functions

attachToLifecycle

Attaches the given ListenerHolder to the lifecycle of this object Detaches and returns the previous ListenerHolder attached under key

abstract fun attachToLifecycle(key: Any, listenerHolder: ListenerHolder<*>): ListenerHolder<*>?

deferred

Returns a LifecycleOwner on which listeners are called on the given executor. All the listeners are attached on the previous LifecycleOwner

open fun deferred(executor: Executor): LifecycleOwner

detachFromLifecycle

Detaches the given ListenerHolder

abstract fun detachFromLifecycle(key: Any, listenerHolder: ListenerHolder<*>): ListenerHolder<*>?

Detaches the ListenerHolder attached under key

abstract fun detachFromLifecycle(key: Any): ListenerHolder<*>?

isAttached

Returns true if the given listenerHolder is attached with the given key

abstract fun isAttached(key: Any, listenerHolder: ListenerHolder<*>): Boolean

listen

Starts listening to the given Field.

open fun <T> listen(field: Field<T>, callback: (T) -> Unit): ListenerHolder<T>
open fun <T> listen(field: Field<T>, callback: Consumer<T>): ListenerHolder<T>
open fun <T> listen(field: Field<T>, callImmediately: Boolean, callback: (T) -> Unit): ListenerHolder<T>
open fun <T> listen(field: Field<T>, callImmediately: Boolean, callback: Consumer<T>): ListenerHolder<T>
open fun <T> listen(field: Field<T>, key: Any, callback: (T) -> Unit): ListenerHolder<T>
open fun <T> listen(field: Field<T>, key: Any, callback: Consumer<T>): ListenerHolder<T>
open fun <T> listen(field: Field<T>, key: Any, callImmediately: Boolean, callback: (T) -> Unit): ListenerHolder<T>
open fun <T> listen(field: Field<T>, key: Any, callImmediately: Boolean, callback: Consumer<T>): ListenerHolder<T>

Companion Object Properties

globalLifecycle

Returns a global LifecycleOwner. Listener are never unregistered automatically.

val globalLifecycle: LifecycleOwner

Companion Object Functions

lifecycle

Calls the specified function f with a new LifecycleOwner as its receiver and returns its result.

fun <T> lifecycle(f: LifecycleOwner.() -> T): T
fun lifecycle(f: Consumer<LifecycleOwner>): Unit

Inheritors

MapLifecycleOwner

An implementation of LifecycleOwner that uses a Map to hold the ListenerHolder

interface MapLifecycleOwner : LifecycleOwner