mirror of
https://github.com/LawnchairLauncher/lawnchair.git
synced 2026-02-20 19:38:21 +00:00
Only remove task if it was uninstalled or removed from the recents list
- Was missing additional checks and unconditionally removing the task
whenever the task was removed from the active tasks in AM. Instead, check
that the app still exists both in the system and in the recents list
before removing.
Bug: 79698015
Test: a) get incoming call, go to overview, end call and ensure removed
b) install app, open app, go to overview, uninstall app and ensure removed
Change-Id: I8901cb232ef7ff0759923d6a98f65df4e4adf88b
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user