diff --git a/app/src/main/java/androidx/lifecycle/ComputableLiveData.java b/app/src/main/java/androidx/lifecycle/ComputableLiveData.java index 837a35dbf..338af5c89 100644 --- a/app/src/main/java/androidx/lifecycle/ComputableLiveData.java +++ b/app/src/main/java/androidx/lifecycle/ComputableLiveData.java @@ -89,14 +89,22 @@ public abstract class ComputableLiveData { @Override public void run() { boolean computed; + long last; do { computed = false; // compute can happen only in 1 thread but no reason to lock others. if (mComputing.compareAndSet(false, true)) { // as long as it is invalid, keep computing. try { + last = android.os.SystemClock.elapsedRealtime(); T value = null; while (mInvalid.compareAndSet(true, false)) { + long now = android.os.SystemClock.elapsedRealtime(); + if (last + 1500 < now && value != null) { + eu.faircode.email.Log.i(mLiveData + " post age=" + (now - last)); + last = now; + mLiveData.postValue(value); + } computed = true; value = compute(); }