}
}
+ private Context mContext;
private LayoutInflater mLayoutInflater;
+ private final List<Task> mTasks = new ArrayList<>();
private final List<Row> mRows = new ArrayList<>();
public RecentsHistoryAdapter(Context context) {
* 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);
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) {
package com.android.systemui.recents.history;
+import android.content.ComponentName;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.Rect;
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.
}
@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);
+ }
}