Merge "Fix LiveData.getValue in multithreading" into oc-support-26.0-dev
am: 7ab6eee6ba

Change-Id: I7c5760db3681f60f0ccd0b53a5c71e4eec896085
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;
     }