[automerger] Only remove task if it was uninstalled or removed from the recents list am: 0e2aa7a264

Change-Id: I90a210f1ae3b5b87daafd83519b34b6f41169db2
This commit is contained in:
Android Build Merger (Role)
2018-05-17 21:54:06 +00:00
@@ -39,6 +39,8 @@ import android.graphics.Point;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.os.Handler;
import android.os.UserHandle;
import android.text.Layout;
import android.text.StaticLayout;
import android.text.TextPaint;
@@ -78,6 +80,8 @@ import com.android.systemui.shared.recents.model.Task;
import com.android.systemui.shared.recents.model.TaskStack;
import com.android.systemui.shared.recents.model.ThumbnailData;
import com.android.systemui.shared.system.ActivityManagerWrapper;
import com.android.systemui.shared.system.BackgroundExecutor;
import com.android.systemui.shared.system.PackageManagerWrapper;
import com.android.systemui.shared.system.TaskStackChangeListener;
import java.util.ArrayList;
@@ -166,10 +170,38 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl
if (!mHandleTaskStackChanges) {
return;
}
TaskView taskView = getTaskView(taskId);
if (taskView != null) {
dismissTask(taskView, true /* animate */, false /* removeTask */);
}
BackgroundExecutor.get().submit(() -> {
TaskView taskView = getTaskView(taskId);
if (taskView == null) {
return;
}
Handler handler = taskView.getHandler();
if (handler == null) {
return;
}
// TODO: Add callbacks from AM reflecting adding/removing from the recents list, and
// remove all these checks
Task.TaskKey taskKey = taskView.getTask().key;
if (PackageManagerWrapper.getInstance().getActivityInfo(taskKey.getComponent(),
taskKey.userId) == null) {
// The package was uninstalled
handler.post(() ->
dismissTask(taskView, true /* animate */, false /* removeTask */));
} else {
RecentsTaskLoadPlan loadPlan = new RecentsTaskLoadPlan(getContext());
RecentsTaskLoadPlan.PreloadOptions opts =
new RecentsTaskLoadPlan.PreloadOptions();
opts.loadTitles = false;
loadPlan.preloadPlan(opts, mModel.getRecentsTaskLoader(), -1,
UserHandle.myUserId());
if (loadPlan.getTaskStack().findTaskWithId(taskId) == null) {
// The task was removed from the recents list
handler.post(() ->
dismissTask(taskView, true /* animate */, false /* removeTask */));
}
}
});
}
@Override