OSDN Git Service

Fix IllegalStateException in recyclerview
authorRaff Tsai <rafftsai@google.com>
Tue, 15 Oct 2019 04:34:03 +0000 (12:34 +0800)
committerRaff Tsai <rafftsai@google.com>
Tue, 15 Oct 2019 09:52:34 +0000 (09:52 +0000)
- Fixed by updating UI in mainthread

Fixes: 142241908
Fixes: 142220754
Test: manual test if it crashes again
Change-Id: Ia83b66d3e60201bc524dbfab69bdeaa5201d38c2

src/com/android/settings/slices/SlicePreferenceController.java

index 8f3d0fb..c31321d 100644 (file)
@@ -32,6 +32,7 @@ import com.android.settings.core.BasePreferenceController;
 import com.android.settingslib.core.lifecycle.LifecycleObserver;
 import com.android.settingslib.core.lifecycle.events.OnStart;
 import com.android.settingslib.core.lifecycle.events.OnStop;
+import com.android.settingslib.utils.ThreadUtils;
 
 /**
  * Default {@link BasePreferenceController} for {@link SliceView}. It will take {@link Uri} for
@@ -65,7 +66,9 @@ public class SlicePreferenceController extends BasePreferenceController implemen
         mUri = uri;
         mLiveData = SliceLiveData.fromUri(mContext, mUri, (int type, Throwable source) -> {
             Log.w(TAG, "Slice may be null. uri = " + uri + ", error = " + type);
-            onChanged(null);
+            ThreadUtils.postOnMainThread(() -> {
+                onChanged(null);
+            });
         });
 
         //TODO(b/120803703): figure out why we need to remove observer first