From 98f7b2b227c48e9b34ffea7af3ab56e81028e130 Mon Sep 17 00:00:00 2001 From: Xuanang Zhao Date: Tue, 11 Oct 2022 16:03:10 +0800 Subject: [PATCH] Clean the slice in onUnpinned rather than onBinded. Change-Id: Idda7cbedb0ce7b0ec83fc2f11a2505634d2b465c Bug: 249101421 --- src/com/android/settings/slices/SettingsSliceProvider.java | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/com/android/settings/slices/SettingsSliceProvider.java b/src/com/android/settings/slices/SettingsSliceProvider.java index 7fd9f3d8d34..655aa9c84b7 100644 --- a/src/com/android/settings/slices/SettingsSliceProvider.java +++ b/src/com/android/settings/slices/SettingsSliceProvider.java @@ -187,6 +187,7 @@ public class SettingsSliceProvider extends SliceProvider { @Override public void onSliceUnpinned(Uri sliceUri) { + mSliceWeakDataCache.remove(sliceUri); final Context context = getContext(); if (!VolumeSliceHelper.unregisterUri(context, sliceUri)) { SliceBroadcastRelay.unregisterReceivers(context, sliceUri); @@ -258,11 +259,6 @@ public class SettingsSliceProvider extends SliceProvider { loadSliceInBackground(sliceUri); return getSliceStub(sliceUri); } - - // Remove the SliceData from the cache after it has been used to prevent a memory-leak. - if (!getPinnedSlices().contains(sliceUri)) { - mSliceWeakDataCache.remove(sliceUri); - } return SliceBuilderUtils.buildSlice(getContext(), cachedSliceData); } finally { StrictMode.setThreadPolicy(oldPolicy);