alexandroid/decompiled/jadx/sources/androidx/lifecycle/LiveData.java
KaKi87 a47fad5135 📦 Add decompiled Alexa 2.2.730155.0 (jadx, apktool, Hermes strings)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-07 00:04:16 +01:00

335 lines
11 KiB
Java

package androidx.lifecycle;
import androidx.annotation.MainThread;
import androidx.arch.core.executor.ArchTaskExecutor;
import androidx.arch.core.internal.SafeIterableMap;
import androidx.lifecycle.Lifecycle;
import defpackage.a$$ExternalSyntheticOutline0;
import java.util.Iterator;
import java.util.Map;
import rx.Single$$ExternalSyntheticBUOutline0;
/* compiled from: r8-map-id-b9432e0f623b4a4bff4ba50a8a24c4aafad2c1e11092747b9fb5e6a22af5a940 */
/* loaded from: classes14.dex */
public abstract class LiveData<T> {
static final Object NOT_SET = new Object();
static final int START_VERSION = -1;
int mActiveCount;
private boolean mChangingActiveState;
private volatile Object mData;
final Object mDataLock;
private boolean mDispatchInvalidated;
private boolean mDispatchingValue;
private SafeIterableMap<Observer<? super T>, LiveData<T>.ObserverWrapper> mObservers;
volatile Object mPendingData;
private final Runnable mPostValueRunnable;
private int mVersion;
/* compiled from: r8-map-id-b9432e0f623b4a4bff4ba50a8a24c4aafad2c1e11092747b9fb5e6a22af5a940 */
public class AlwaysActiveObserver extends LiveData<T>.ObserverWrapper {
public AlwaysActiveObserver(Observer<? super T> observer) {
super(observer);
}
@Override // androidx.lifecycle.LiveData.ObserverWrapper
public boolean shouldBeActive() {
return true;
}
}
/* compiled from: r8-map-id-b9432e0f623b4a4bff4ba50a8a24c4aafad2c1e11092747b9fb5e6a22af5a940 */
public class LifecycleBoundObserver extends LiveData<T>.ObserverWrapper implements LifecycleEventObserver {
final LifecycleOwner mOwner;
public LifecycleBoundObserver(LifecycleOwner lifecycleOwner, Observer<? super T> observer) {
super(observer);
this.mOwner = lifecycleOwner;
}
@Override // androidx.lifecycle.LiveData.ObserverWrapper
public void detachObserver() {
this.mOwner.getLifecycle().removeObserver(this);
}
@Override // androidx.lifecycle.LiveData.ObserverWrapper
public boolean isAttachedTo(LifecycleOwner lifecycleOwner) {
return this.mOwner == lifecycleOwner;
}
@Override // androidx.lifecycle.LifecycleEventObserver
public void onStateChanged(LifecycleOwner lifecycleOwner, Lifecycle.Event event) {
Lifecycle.State state = this.mOwner.getLifecycle().getState();
if (state == Lifecycle.State.DESTROYED) {
LiveData.this.removeObserver(this.mObserver);
return;
}
Lifecycle.State state2 = null;
while (state2 != state) {
activeStateChanged(shouldBeActive());
state2 = state;
state = this.mOwner.getLifecycle().getState();
}
}
@Override // androidx.lifecycle.LiveData.ObserverWrapper
public boolean shouldBeActive() {
return this.mOwner.getLifecycle().getState().isAtLeast(Lifecycle.State.STARTED);
}
}
public LiveData() {
this.mDataLock = new Object();
this.mObservers = new SafeIterableMap<>();
this.mActiveCount = 0;
Object obj = NOT_SET;
this.mPendingData = obj;
this.mPostValueRunnable = new Runnable() { // from class: androidx.lifecycle.LiveData.1
/* JADX WARN: Multi-variable type inference failed */
@Override // java.lang.Runnable
public void run() {
Object obj2;
synchronized (LiveData.this.mDataLock) {
obj2 = LiveData.this.mPendingData;
LiveData.this.mPendingData = LiveData.NOT_SET;
}
LiveData.this.setValue(obj2);
}
};
this.mData = obj;
this.mVersion = -1;
}
public static void assertMainThread(String str) {
if (ArchTaskExecutor.getInstance().isMainThread()) {
return;
}
Single$$ExternalSyntheticBUOutline0.m$2(a$$ExternalSyntheticOutline0.m("Cannot invoke ", str, " on a background thread"));
}
private void considerNotify(LiveData<T>.ObserverWrapper observerWrapper) {
if (observerWrapper.mActive) {
if (!observerWrapper.shouldBeActive()) {
observerWrapper.activeStateChanged(false);
return;
}
int i = observerWrapper.mLastVersion;
int i2 = this.mVersion;
if (i >= i2) {
return;
}
observerWrapper.mLastVersion = i2;
observerWrapper.mObserver.onChanged((Object) this.mData);
}
}
@MainThread
public void changeActiveCounter(int i) {
int i2 = this.mActiveCount;
this.mActiveCount = i + i2;
if (this.mChangingActiveState) {
return;
}
this.mChangingActiveState = true;
while (true) {
try {
int i3 = this.mActiveCount;
if (i2 == i3) {
this.mChangingActiveState = false;
return;
}
boolean z = i2 == 0 && i3 > 0;
boolean z2 = i2 > 0 && i3 == 0;
if (z) {
onActive();
} else if (z2) {
onInactive();
}
i2 = i3;
} catch (Throwable th) {
this.mChangingActiveState = false;
throw th;
}
}
}
public void dispatchingValue(LiveData<T>.ObserverWrapper observerWrapper) {
if (this.mDispatchingValue) {
this.mDispatchInvalidated = true;
return;
}
this.mDispatchingValue = true;
do {
this.mDispatchInvalidated = false;
if (observerWrapper != null) {
considerNotify(observerWrapper);
observerWrapper = null;
} else {
SafeIterableMap<Observer<? super T>, LiveData<T>.ObserverWrapper>.IteratorWithAdditions iteratorWithAdditions = this.mObservers.iteratorWithAdditions();
while (iteratorWithAdditions.hasNext()) {
considerNotify((ObserverWrapper) iteratorWithAdditions.next().getValue());
if (this.mDispatchInvalidated) {
break;
}
}
}
} while (this.mDispatchInvalidated);
this.mDispatchingValue = false;
}
public T getValue() {
T t = (T) this.mData;
if (t != NOT_SET) {
return t;
}
return null;
}
public int getVersion() {
return this.mVersion;
}
public boolean hasActiveObservers() {
return this.mActiveCount > 0;
}
public boolean hasObservers() {
return this.mObservers.size() > 0;
}
public boolean isInitialized() {
return this.mData != NOT_SET;
}
@MainThread
public void observe(LifecycleOwner lifecycleOwner, Observer<? super T> observer) {
assertMainThread("observe");
if (lifecycleOwner.getLifecycle().getState() == Lifecycle.State.DESTROYED) {
return;
}
LifecycleBoundObserver lifecycleBoundObserver = new LifecycleBoundObserver(lifecycleOwner, observer);
LiveData<T>.ObserverWrapper putIfAbsent = this.mObservers.putIfAbsent(observer, lifecycleBoundObserver);
if (putIfAbsent != null && !putIfAbsent.isAttachedTo(lifecycleOwner)) {
Single$$ExternalSyntheticBUOutline0.m$3("Cannot add the same observer with different lifecycles");
} else {
if (putIfAbsent != null) {
return;
}
lifecycleOwner.getLifecycle().addObserver(lifecycleBoundObserver);
}
}
@MainThread
public void observeForever(Observer<? super T> observer) {
assertMainThread("observeForever");
AlwaysActiveObserver alwaysActiveObserver = new AlwaysActiveObserver(observer);
LiveData<T>.ObserverWrapper putIfAbsent = this.mObservers.putIfAbsent(observer, alwaysActiveObserver);
if (putIfAbsent instanceof LifecycleBoundObserver) {
Single$$ExternalSyntheticBUOutline0.m$3("Cannot add the same observer with different lifecycles");
} else {
if (putIfAbsent != null) {
return;
}
alwaysActiveObserver.activeStateChanged(true);
}
}
public void postValue(T t) {
boolean z;
synchronized (this.mDataLock) {
z = this.mPendingData == NOT_SET;
this.mPendingData = t;
}
if (z) {
ArchTaskExecutor.getInstance().postToMainThread(this.mPostValueRunnable);
}
}
@MainThread
public void removeObserver(Observer<? super T> observer) {
assertMainThread("removeObserver");
LiveData<T>.ObserverWrapper remove = this.mObservers.remove(observer);
if (remove == null) {
return;
}
remove.detachObserver();
remove.activeStateChanged(false);
}
@MainThread
public void removeObservers(LifecycleOwner lifecycleOwner) {
assertMainThread("removeObservers");
Iterator<Map.Entry<Observer<? super T>, LiveData<T>.ObserverWrapper>> it2 = this.mObservers.iterator();
while (it2.hasNext()) {
Map.Entry<Observer<? super T>, LiveData<T>.ObserverWrapper> next = it2.next();
if (next.getValue().isAttachedTo(lifecycleOwner)) {
removeObserver(next.getKey());
}
}
}
@MainThread
public void setValue(T t) {
assertMainThread("setValue");
this.mVersion++;
this.mData = t;
dispatchingValue(null);
}
/* compiled from: r8-map-id-b9432e0f623b4a4bff4ba50a8a24c4aafad2c1e11092747b9fb5e6a22af5a940 */
public abstract class ObserverWrapper {
boolean mActive;
int mLastVersion = -1;
final Observer<? super T> mObserver;
public ObserverWrapper(Observer<? super T> observer) {
this.mObserver = observer;
}
public void activeStateChanged(boolean z) {
if (z == this.mActive) {
return;
}
this.mActive = z;
LiveData.this.changeActiveCounter(z ? 1 : -1);
if (this.mActive) {
LiveData.this.dispatchingValue(this);
}
}
public boolean isAttachedTo(LifecycleOwner lifecycleOwner) {
return false;
}
public abstract boolean shouldBeActive();
public void detachObserver() {
}
}
public void onActive() {
}
public void onInactive() {
}
public LiveData(T t) {
this.mDataLock = new Object();
this.mObservers = new SafeIterableMap<>();
this.mActiveCount = 0;
this.mPendingData = NOT_SET;
this.mPostValueRunnable = new Runnable() { // from class: androidx.lifecycle.LiveData.1
/* JADX WARN: Multi-variable type inference failed */
@Override // java.lang.Runnable
public void run() {
Object obj2;
synchronized (LiveData.this.mDataLock) {
obj2 = LiveData.this.mPendingData;
LiveData.this.mPendingData = LiveData.NOT_SET;
}
LiveData.this.setValue(obj2);
}
};
this.mData = t;
this.mVersion = 0;
}
}