OSDN Git Service

Fix content observer in SliceView
authorMady Mellor <madym@google.com>
Fri, 3 Nov 2017 20:30:43 +0000 (13:30 -0700)
committerMady Mellor <madym@google.com>
Fri, 3 Nov 2017 20:34:07 +0000 (13:34 -0700)
showSlice was being called which would clear the content observer, instead
specify slice and reinflate within setSlice(uri) method.

Test: Have a slice, call notifyContentChanged on the uri, note that it
      updates

Change-Id: I5ce8af2867114b9d053f1623bc4a47dfabe961fc

core/java/android/app/slice/widget/SliceView.java

index 5bafbc0..aafe2a6 100644 (file)
@@ -210,11 +210,15 @@ public class SliceView extends ViewGroup {
         validate(sliceUri);
         Slice s = Slice.bindSlice(mContext.getContentResolver(), sliceUri);
         if (s != null) {
+            if (mObserver != null) {
+                getContext().getContentResolver().unregisterContentObserver(mObserver);
+            }
             mObserver = new SliceObserver(new Handler(Looper.getMainLooper()));
             if (isAttachedToWindow()) {
                 registerSlice(sliceUri);
             }
-            showSlice(s);
+            mCurrentSlice = s;
+            reinflate();
         }
         return s != null;
     }