From 5d1413e7c391fdb1325c6833399c10a8448354dc Mon Sep 17 00:00:00 2001 From: Winson Chung Date: Fri, 11 Dec 2015 10:25:57 -0500 Subject: [PATCH] Removing historical tasks when packages are uninstalled. Change-Id: I9eb1307264fab8dcace732af2290ca419fcc548a --- .../recents/history/RecentsHistoryAdapter.java | 24 ++++++++++++++++++ .../recents/history/RecentsHistoryView.java | 29 ++++++++++++++++++++++ 2 files changed, 53 insertions(+) diff --git a/packages/SystemUI/src/com/android/systemui/recents/history/RecentsHistoryAdapter.java b/packages/SystemUI/src/com/android/systemui/recents/history/RecentsHistoryAdapter.java index 2eee1da10781..06265bd8c12b 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/history/RecentsHistoryAdapter.java +++ b/packages/SystemUI/src/com/android/systemui/recents/history/RecentsHistoryAdapter.java @@ -110,7 +110,9 @@ public class RecentsHistoryAdapter extends RecyclerView.Adapter mTasks = new ArrayList<>(); private final List mRows = new ArrayList<>(); public RecentsHistoryAdapter(Context context) { @@ -121,6 +123,10 @@ public class RecentsHistoryAdapter extends RecyclerView.Adapter tasks) { + mContext = context; + mTasks.clear(); + mTasks.addAll(tasks); + final Locale l = context.getResources().getConfiguration().locale; final String dateFormatStr = DateFormat.getBestDateTimePattern(l, "EEEEMMMMd"); final List tasksMostRecent = new ArrayList<>(tasks); @@ -144,6 +150,24 @@ public class RecentsHistoryAdapter extends RecyclerView.Adapter= 0; i--) { + Task task = mTasks.get(i); + String taskPackage = task.key.getComponent().getPackageName(); + if (task.key.userId == userId && taskPackage.equals(packageName)) { + mTasks.remove(i); + packagesRemoved = true; + } + } + if (packagesRemoved) { + updateTasks(mContext, new ArrayList(mTasks)); + } + } + @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { switch (viewType) { diff --git a/packages/SystemUI/src/com/android/systemui/recents/history/RecentsHistoryView.java b/packages/SystemUI/src/com/android/systemui/recents/history/RecentsHistoryView.java index 58511110d452..7755dab2ef58 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/history/RecentsHistoryView.java +++ b/packages/SystemUI/src/com/android/systemui/recents/history/RecentsHistoryView.java @@ -16,6 +16,7 @@ package com.android.systemui.recents.history; +import android.content.ComponentName; import android.content.Context; import android.content.res.Resources; import android.graphics.Rect; @@ -29,9 +30,18 @@ import android.view.animation.Interpolator; import android.widget.LinearLayout; import com.android.systemui.R; import com.android.systemui.recents.Recents; +import com.android.systemui.recents.RecentsActivity; import com.android.systemui.recents.RecentsConfiguration; +import com.android.systemui.recents.events.EventBus; +import com.android.systemui.recents.events.activity.PackagesChangedEvent; import com.android.systemui.recents.misc.ReferenceCountedTrigger; +import com.android.systemui.recents.misc.SystemServicesProxy; +import com.android.systemui.recents.model.Task; import com.android.systemui.recents.model.TaskStack; +import com.android.systemui.recents.views.TaskView; + +import java.util.ArrayList; +import java.util.HashSet; /** * A list of the recent tasks that are not in the stack. @@ -165,8 +175,27 @@ public class RecentsHistoryView extends LinearLayout { } @Override + protected void onAttachedToWindow() { + SystemServicesProxy ssp = Recents.getSystemServices(); + EventBus.getDefault().register(this, RecentsActivity.EVENT_BUS_PRIORITY + 1); + super.onAttachedToWindow(); + } + + @Override + protected void onDetachedFromWindow() { + super.onDetachedFromWindow(); + EventBus.getDefault().unregister(this); + } + + @Override public WindowInsets onApplyWindowInsets(WindowInsets insets) { setSystemInsets(insets.getSystemWindowInsets()); return insets; } + + /**** EventBus Events ****/ + + public final void onBusEvent(PackagesChangedEvent event) { + mAdapter.removeTasks(event.packageName, event.userId); + } } -- 2.11.0