diff options
author | Jason Chiu <chiujason@google.com> | 2020-06-22 07:58:25 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2020-06-22 07:58:25 +0000 |
commit | c548288a5197e22e44d7d3cd558155cde13e38ef (patch) | |
tree | 4e0898d7b4710b755bd803be7ac830c363e86212 | |
parent | f1a65df04a15a2b4462c9d68014694a0eb7b9c10 (diff) | |
parent | 73afb042dc3e6359f0d3350bc25038c5f26d0826 (diff) | |
download | packages_apps_Settings-c548288a5197e22e44d7d3cd558155cde13e38ef.tar.gz packages_apps_Settings-c548288a5197e22e44d7d3cd558155cde13e38ef.tar.bz2 packages_apps_Settings-c548288a5197e22e44d7d3cd558155cde13e38ef.zip |
Merge "Workaround of Slice not pinned bug when using SliceCallback" into rvc-dev
-rw-r--r-- | src/com/android/settings/homepage/contextualcards/EligibleCardChecker.java | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/com/android/settings/homepage/contextualcards/EligibleCardChecker.java b/src/com/android/settings/homepage/contextualcards/EligibleCardChecker.java index 43403306cb..46b4c869ec 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<ContextualCard> { // 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; } |