From f11088a88644e842a137c82c14813cfe8ef72953 Mon Sep 17 00:00:00 2001 From: Andrii Kulian Date: Thu, 25 Jun 2020 22:57:42 +0000 Subject: [PATCH] Revert "Revert "Workaround of Slice not pinned bug when using Sl..." Revert "Import AndroidX from build 6620107" Revert submission 11970208-update_slice_view Reason for revert: b/159943588 Reverted Changes: Id09f4f6aa:Import AndroidX from build 6620107 Icb150b4f6:Revert "Workaround of Slice not pinned bug when us... Bug: 157387583 Bug: 159943588 Change-Id: Iedd9883ea144395b9d4afb011a218fe5dcb6b560 --- .../homepage/contextualcards/EligibleCardChecker.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/com/android/settings/homepage/contextualcards/EligibleCardChecker.java b/src/com/android/settings/homepage/contextualcards/EligibleCardChecker.java index 43403306cb3..46b4c869ecb 100644 --- a/src/com/android/settings/homepage/contextualcards/EligibleCardChecker.java +++ b/src/com/android/settings/homepage/contextualcards/EligibleCardChecker.java @@ -22,6 +22,7 @@ import android.app.settings.SettingsEnums; import android.content.ContentResolver; import android.content.Context; import android.net.Uri; +import android.os.AsyncTask; import android.util.Log; import androidx.annotation.VisibleForTesting; @@ -32,6 +33,7 @@ import androidx.slice.core.SliceAction; import com.android.settings.overlay.FeatureFactory; import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; +import com.android.settingslib.utils.ThreadUtils; import java.util.List; import java.util.concurrent.Callable; @@ -115,7 +117,12 @@ public class EligibleCardChecker implements Callable { // Register a trivial callback to pin the slice manager.registerSliceCallback(uri, callback); final Slice slice = manager.bindSlice(uri); - manager.unregisterSliceCallback(uri, callback); + + // Workaround of unpinning slice in the same SerialExecutor of AsyncTask as SliceCallback's + // observer. + ThreadUtils.postOnMainThread(() -> + AsyncTask.execute(() -> manager.unregisterSliceCallback(uri, callback)) + ); return slice; }