From 40d9986fd7a2ed2c767011d74c14e8f9e6be82b9 Mon Sep 17 00:00:00 2001 From: Raff Tsai Date: Tue, 15 Oct 2019 12:34:03 +0800 Subject: [PATCH] Fix IllegalStateException in recyclerview - Fixed by updating UI in mainthread Fixes: 142241908 Fixes: 142220754 Test: manual test if it crashes again Change-Id: Ia83b66d3e60201bc524dbfab69bdeaa5201d38c2 --- .../android/settings/slices/SlicePreferenceController.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/com/android/settings/slices/SlicePreferenceController.java b/src/com/android/settings/slices/SlicePreferenceController.java index 8f3d0fb9530..c31321d9c4b 100644 --- a/src/com/android/settings/slices/SlicePreferenceController.java +++ b/src/com/android/settings/slices/SlicePreferenceController.java @@ -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