diff --git a/app/build.gradle b/app/build.gradle index 1c9e95a75f..00f90aa36e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -162,15 +162,19 @@ configurations.all { exclude group: "androidx.room", module: "room-runtime" // Workaround https://issuetracker.google.com/issues/134685570 exclude group: "androidx.lifecycle", module: "lifecycle-livedata" + exclude group: "androidx.lifecycle", module: "lifecycle-livedata-core" + + // lifecycle-livedata: ComputableLiveData, MediatorLiveData, Transformations + // lifecycle-livedata-core: LiveData, MutableLiveData, Observer } dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) - def core_version = "1.2.0-alpha04" + def core_version = "1.2.0-beta01" def appcompat_version = "1.1.0" - def fragment_version = "1.1.0" - def recyclerview_version = "1.1.0-beta04" + def fragment_version = "1.2.0-beta01" + def recyclerview_version = "1.1.0-beta05" def coordinatorlayout_version = "1.1.0-beta01" def constraintlayout_version = "2.0.0-beta2" def material_version = "1.1.0-alpha10" @@ -178,13 +182,13 @@ dependencies { def lbm_version = "1.0.0" def swiperefresh_version = "1.0.0" def documentfile_version = "1.0.1" - def lifecycle_version = "2.1.0" - def room_version = "2.2.0-rc01" + def lifecycle_version = "2.2.0-beta01" + def room_version = "2.2.0" def paging_version = "2.1.0" def preference_version = "1.1.0" def work_version = "2.2.0" - def exif_version = "1.1.0-beta01" - def biometric_version = "1.0.0-beta02" + def exif_version = "1.1.0-rc01" + def biometric_version = "1.0.0-rc01" def billingclient_version = "2.0.3" def javamail_version = "1.6.4" def jsoup_version = "1.12.1" diff --git a/app/src/main/java/androidx/lifecycle/ComputableLiveData.java b/app/src/main/java/androidx/lifecycle/ComputableLiveData.java index cc375b15ba..9dd0123c42 100644 --- a/app/src/main/java/androidx/lifecycle/ComputableLiveData.java +++ b/app/src/main/java/androidx/lifecycle/ComputableLiveData.java @@ -37,7 +37,7 @@ import java.util.concurrent.atomic.AtomicBoolean; * @param The type of the live data * @hide internal */ -@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP_PREFIX) +@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP) public abstract class ComputableLiveData { @SuppressWarnings("WeakerAccess") /* synthetic access */ final Executor mExecutor; @@ -152,8 +152,7 @@ public abstract class ComputableLiveData { ArchTaskExecutor.getInstance().executeOnMainThread(mInvalidationRunnable); } - // TODO https://issuetracker.google.com/issues/112197238 - @SuppressWarnings({"WeakerAccess", "UnknownNullness"}) + @SuppressWarnings("WeakerAccess") @WorkerThread protected abstract T compute(); } diff --git a/app/src/main/java/androidx/lifecycle/LiveData.java b/app/src/main/java/androidx/lifecycle/LiveData.java index 43909fa2bf..719c8edf57 100644 --- a/app/src/main/java/androidx/lifecycle/LiveData.java +++ b/app/src/main/java/androidx/lifecycle/LiveData.java @@ -80,6 +80,7 @@ public abstract class LiveData { @SuppressWarnings("FieldCanBeLocal") private boolean mDispatchInvalidated; private final Runnable mPostValueRunnable = new Runnable() { + @SuppressWarnings("unchecked") @Override public void run() { Object newValue; @@ -87,7 +88,6 @@ public abstract class LiveData { newValue = mPendingData; mPendingData = NOT_SET; } - //noinspection unchecked setValue((T) newValue); } }; @@ -110,6 +110,7 @@ public abstract class LiveData { mVersion = START_VERSION; } + @SuppressWarnings("unchecked") private void considerNotify(ObserverWrapper observer) { if (!observer.mActive) { return; @@ -127,7 +128,6 @@ public abstract class LiveData { return; } observer.mLastVersion = mVersion; - //noinspection unchecked observer.mObserver.onChanged((T) mData); } @@ -314,11 +314,11 @@ public abstract class LiveData { * * @return the current value */ + @SuppressWarnings("unchecked") @Nullable public T getValue() { Object data = mData; if (data != NOT_SET) { - //noinspection unchecked return (T) data; } return null; @@ -386,7 +386,8 @@ public abstract class LiveData { } @Override - public void onStateChanged(LifecycleOwner source, Lifecycle.Event event) { + public void onStateChanged(@NonNull LifecycleOwner source, + @NonNull Lifecycle.Event event) { if (mOwner.getLifecycle().getCurrentState() == DESTROYED) { removeObserver(mObserver); return; diff --git a/app/src/main/java/androidx/lifecycle/Transformations.java b/app/src/main/java/androidx/lifecycle/Transformations.java index 10261e9352..7b2ad3c244 100644 --- a/app/src/main/java/androidx/lifecycle/Transformations.java +++ b/app/src/main/java/androidx/lifecycle/Transformations.java @@ -65,7 +65,6 @@ public class Transformations { * {@code mapFunction} to each value set. */ @MainThread - @NonNull public static LiveData map( @NonNull LiveData source, @NonNull final Function mapFunction) { @@ -130,7 +129,6 @@ public class Transformations { * value set */ @MainThread - @NonNull public static LiveData switchMap( @NonNull LiveData source, @NonNull final Function> switchMapFunction) { @@ -160,35 +158,4 @@ public class Transformations { }); return result; } - - /** - * Creates a new {@link LiveData} object that does not emit a value until the source LiveData - * value has been changed. The value is considered changed if {@code equals()} yields - * {@code false}. - * - * @param source the input {@link LiveData} - * @param the generic type parameter of {@code source} - * @return a new {@link LiveData} of type {@code X} - */ - @MainThread - @NonNull - public static LiveData distinctUntilChanged(@NonNull LiveData source) { - final MediatorLiveData outputLiveData = new MediatorLiveData<>(); - outputLiveData.addSource(source, new Observer() { - - boolean mFirstTime = true; - - @Override - public void onChanged(X currentValue) { - final X previousValue = outputLiveData.getValue(); - if (mFirstTime - || (previousValue == null && currentValue != null) - || (previousValue != null && !previousValue.equals(currentValue))) { - mFirstTime = false; - outputLiveData.setValue(currentValue); - } - } - }); - return outputLiveData; - } }