Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c533f315 authored by Winson Chung's avatar Winson Chung
Browse files

Defer removing the task view until the app has drawn

Bug: 111896388
Change-Id: I8c900e56fcbbdc400dce646c50f8f14b1da4e17f
parent d65f5f7f
Loading
Loading
Loading
Loading
+1.28 KiB (139 KiB)

File changed.

No diff preview for this file type.

+19 −3
Original line number Diff line number Diff line
@@ -57,6 +57,7 @@ import com.android.systemui.shared.recents.model.Task.TaskCallbacks;
import com.android.systemui.shared.recents.model.ThumbnailData;
import com.android.systemui.shared.system.ActivityManagerWrapper;

import com.android.systemui.shared.system.ActivityOptionsCompat;
import java.util.function.Consumer;

/**
@@ -204,11 +205,26 @@ public class TaskView extends FrameLayout implements TaskCallbacks, PageCallback
            if (animate) {
                opts = ((BaseDraggingActivity) fromContext(getContext()))
                        .getActivityLaunchOptions(this);
                ActivityManagerWrapper.getInstance().startActivityFromRecentsAsync(mTask.key,
                        opts, resultCallback, resultCallbackHandler);
            } else {
                opts = ActivityOptions.makeCustomAnimation(getContext(), 0, 0);
                opts = ActivityOptionsCompat.makeCustomAnimation(getContext(), 0, 0, () -> {
                    if (resultCallback != null) {
                        // Only post the animation start after the system has indicated that the
                        // transition has started
                        resultCallbackHandler.post(() -> resultCallback.accept(true));
                    }
                }, resultCallbackHandler);
                ActivityManagerWrapper.getInstance().startActivityFromRecentsAsync(mTask.key,
                    opts, resultCallback, resultCallbackHandler);
                        opts, (success) -> {
                            if (resultCallback != null && !success) {
                                // If the call to start activity failed, then post the result
                                // immediately, otherwise, wait for the animation start callback
                                // from the activity options above
                                resultCallbackHandler.post(() -> resultCallback.accept(false));
                            }
                        }, resultCallbackHandler);
            }
        }
    }