Merge "Fix LiveData.getValue in multithreading" into oc-support-26.0-dev
diff --git a/lifecycle/extensions/src/main/java/android/arch/lifecycle/LiveData.java b/lifecycle/extensions/src/main/java/android/arch/lifecycle/LiveData.java
index d689442..99d859c 100644
--- a/lifecycle/extensions/src/main/java/android/arch/lifecycle/LiveData.java
+++ b/lifecycle/extensions/src/main/java/android/arch/lifecycle/LiveData.java
@@ -87,7 +87,7 @@
// how many observers are in active state
private int mActiveCount = 0;
- private Object mData = NOT_SET;
+ private volatile Object mData = NOT_SET;
// when setData is called, we set the pending data and actual data swap happens on the main
// thread
private volatile Object mPendingData = NOT_SET;
@@ -302,12 +302,10 @@
*/
@Nullable
public T getValue() {
- // we do not return pending data here to be able to serve a consistent view to the main
- // thread.
Object data = mData;
- if (mData != NOT_SET) {
+ if (data != NOT_SET) {
//noinspection unchecked
- return (T) mData;
+ return (T) data;
}
return null;
}