diff --git a/quickstep/src/com/android/quickstep/RecentsModel.java b/quickstep/src/com/android/quickstep/RecentsModel.java index e358a8e8fc..89351aa2d2 100644 --- a/quickstep/src/com/android/quickstep/RecentsModel.java +++ b/quickstep/src/com/android/quickstep/RecentsModel.java @@ -78,6 +78,8 @@ public class RecentsModel implements IconChangeListener, TaskStackChangeListener private final TaskThumbnailCache mThumbnailCache; private final ComponentCallbacks mCallbacks; + private final TaskStackChangeListeners mTaskStackChangeListeners; + private RecentsModel(Context context) { this(context, new IconProvider(context)); } @@ -89,13 +91,14 @@ public class RecentsModel implements IconChangeListener, TaskStackChangeListener SystemUiProxy.INSTANCE.get(context)), new TaskIconCache(context, RECENTS_MODEL_EXECUTOR, iconProvider), new TaskThumbnailCache(context, RECENTS_MODEL_EXECUTOR), - iconProvider); + iconProvider, + TaskStackChangeListeners.getInstance()); } @VisibleForTesting RecentsModel(Context context, RecentTasksList taskList, TaskIconCache iconCache, - TaskThumbnailCache thumbnailCache, - IconProvider iconProvider) { + TaskThumbnailCache thumbnailCache, IconProvider iconProvider, + TaskStackChangeListeners taskStackChangeListeners) { mContext = context; mTaskList = taskList; mIconCache = iconCache; @@ -117,7 +120,8 @@ public class RecentsModel implements IconChangeListener, TaskStackChangeListener mCallbacks = null; } - TaskStackChangeListeners.getInstance().registerTaskStackListener(this); + mTaskStackChangeListeners = taskStackChangeListeners; + mTaskStackChangeListeners.registerTaskStackListener(this); iconProvider.registerIconChangeListener(this, MAIN_EXECUTOR.getHandler()); } @@ -358,6 +362,8 @@ public class RecentsModel implements IconChangeListener, TaskStackChangeListener if (mCallbacks != null) { mContext.unregisterComponentCallbacks(mCallbacks); } + mIconCache.removeTaskVisualsChangeListener(); + mTaskStackChangeListeners.unregisterTaskStackListener(this); } /** diff --git a/quickstep/tests/src/com/android/quickstep/RecentsModelTest.java b/quickstep/tests/src/com/android/quickstep/RecentsModelTest.java index 08e08988bf..c552d83400 100644 --- a/quickstep/tests/src/com/android/quickstep/RecentsModelTest.java +++ b/quickstep/tests/src/com/android/quickstep/RecentsModelTest.java @@ -42,6 +42,7 @@ import com.android.launcher3.R; import com.android.launcher3.icons.IconProvider; import com.android.quickstep.util.GroupTask; import com.android.systemui.shared.recents.model.Task; +import com.android.systemui.shared.system.TaskStackChangeListeners; import org.junit.After; import org.junit.Before; @@ -93,7 +94,7 @@ public class RecentsModelTest { when(mThumbnailCache.isPreloadingEnabled()).thenReturn(true); mRecentsModel = new RecentsModel(mContext, mTasksList, mock(TaskIconCache.class), - mThumbnailCache, mock(IconProvider.class)); + mThumbnailCache, mock(IconProvider.class), mock(TaskStackChangeListeners.class)); mResource = mock(Resources.class); when(mResource.getInteger((R.integer.recentsThumbnailCacheSize))).thenReturn(3);