diff options
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/recents/history/RecentsHistoryAdapter.java | 24 | ||||
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/recents/history/RecentsHistoryView.java | 29 |
2 files changed, 53 insertions, 0 deletions
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<RecentsHistoryAd } } + private Context mContext; private LayoutInflater mLayoutInflater; + private final List<Task> mTasks = new ArrayList<>(); private final List<Row> mRows = new ArrayList<>(); public RecentsHistoryAdapter(Context context) { @@ -121,6 +123,10 @@ public class RecentsHistoryAdapter extends RecyclerView.Adapter<RecentsHistoryAd * Updates this adapter with the given tasks. */ public void updateTasks(Context context, List<Task> tasks) { + mContext = context; + mTasks.clear(); + mTasks.addAll(tasks); + final Locale l = context.getResources().getConfiguration().locale; final String dateFormatStr = DateFormat.getBestDateTimePattern(l, "EEEEMMMMd"); final List<Task> tasksMostRecent = new ArrayList<>(tasks); @@ -144,6 +150,24 @@ public class RecentsHistoryAdapter extends RecyclerView.Adapter<RecentsHistoryAd notifyDataSetChanged(); } + /** + * Removes historical tasks beloning to the specified package and user. + */ + public void removeTasks(String packageName, int userId) { + boolean packagesRemoved = false; + for (int i = mTasks.size() - 1; i >= 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<Task>(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 e8e6dd7bd8d7..538ec93efeb6 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. @@ -169,8 +179,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); + } } |