/* * Copyright 2018 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package androidx.lifecycle import androidx.annotation.MainThread /** * Adds the given [onChanged] lambda as an observer within the lifespan of the given * [owner] and returns a reference to observer. * The events are dispatched on the main thread. If LiveData already has data * set, it will be delivered to the onChanged. * * The observer will only receive events if the owner is in [Lifecycle.State.STARTED] * or [Lifecycle.State.RESUMED] state (active). * * If the owner moves to the [Lifecycle.State.DESTROYED] state, the observer will * automatically be removed. * * When data changes while the [owner] is not active, it will not receive any updates. * If it becomes active again, it will receive the last available data automatically. * * LiveData keeps a strong reference to the observer and the owner as long as the * given LifecycleOwner is not destroyed. When it is destroyed, LiveData removes references to * the observer and the owner. * * If the given owner is already in [Lifecycle.State.DESTROYED] state, LiveData * ignores the call. */ @Deprecated( "This extension method is not required when using Kotlin 1.4. " + "You should remove \"import androidx.lifecycle.observe\"" ) @MainThread public inline fun LiveData.observe( owner: LifecycleOwner, crossinline onChanged: (T) -> Unit ): Observer { val wrappedObserver = Observer { t -> onChanged.invoke(t) } observe(owner, wrappedObserver) return wrappedObserver }