Merge changes from topic "activity-embedding-finish-tests-1" into sc-v2-dev

* changes:
  Do Not Report Activities that are Finishing
  Create HandlerThread for TaskFragmentAnimationRunner
This commit is contained in:
TreeHugger Robot
2021-12-07 20:36:36 +00:00
committed by Android (Google) Code Review
3 changed files with 14 additions and 10 deletions

View File

@@ -16,6 +16,7 @@
package androidx.window.extensions.embedding; package androidx.window.extensions.embedding;
import static android.os.Process.THREAD_PRIORITY_DISPLAY;
import static android.view.RemoteAnimationTarget.MODE_CLOSING; import static android.view.RemoteAnimationTarget.MODE_CLOSING;
import static android.view.WindowManager.TRANSIT_OLD_ACTIVITY_CLOSE; import static android.view.WindowManager.TRANSIT_OLD_ACTIVITY_CLOSE;
import static android.view.WindowManager.TRANSIT_OLD_ACTIVITY_OPEN; import static android.view.WindowManager.TRANSIT_OLD_ACTIVITY_OPEN;
@@ -29,7 +30,7 @@ import android.animation.Animator;
import android.animation.ValueAnimator; import android.animation.ValueAnimator;
import android.graphics.Rect; import android.graphics.Rect;
import android.os.Handler; import android.os.Handler;
import android.os.Looper; import android.os.HandlerThread;
import android.os.RemoteException; import android.os.RemoteException;
import android.util.Log; import android.util.Log;
import android.view.IRemoteAnimationFinishedCallback; import android.view.IRemoteAnimationFinishedCallback;
@@ -50,10 +51,14 @@ import java.util.function.BiFunction;
class TaskFragmentAnimationRunner extends IRemoteAnimationRunner.Stub { class TaskFragmentAnimationRunner extends IRemoteAnimationRunner.Stub {
private static final String TAG = "TaskFragAnimationRunner"; private static final String TAG = "TaskFragAnimationRunner";
private final Handler mHandler = new Handler(Looper.myLooper()); private final Handler mHandler;
private final TaskFragmentAnimationSpec mAnimationSpec; private final TaskFragmentAnimationSpec mAnimationSpec;
TaskFragmentAnimationRunner() { TaskFragmentAnimationRunner() {
HandlerThread animationThread = new HandlerThread(
"androidx.window.extensions.embedding", THREAD_PRIORITY_DISPLAY);
animationThread.start();
mHandler = animationThread.getThreadHandler();
mAnimationSpec = new TaskFragmentAnimationSpec(mHandler); mAnimationSpec = new TaskFragmentAnimationSpec(mHandler);
} }

View File

@@ -103,7 +103,7 @@ class TaskFragmentContainer {
ActivityThread activityThread = ActivityThread.currentActivityThread(); ActivityThread activityThread = ActivityThread.currentActivityThread();
for (IBinder token : mInfo.getActivities()) { for (IBinder token : mInfo.getActivities()) {
Activity activity = activityThread.getActivity(token); Activity activity = activityThread.getActivity(token);
if (activity != null && !allActivities.contains(activity)) { if (activity != null && !activity.isFinishing() && !allActivities.contains(activity)) {
allActivities.add(activity); allActivities.add(activity);
} }
} }

View File

@@ -2191,14 +2191,13 @@ class TaskFragment extends WindowContainer<WindowContainer> {
TaskFragmentInfo getTaskFragmentInfo() { TaskFragmentInfo getTaskFragmentInfo() {
List<IBinder> childActivities = new ArrayList<>(); List<IBinder> childActivities = new ArrayList<>();
for (int i = 0; i < getChildCount(); i++) { for (int i = 0; i < getChildCount(); i++) {
WindowContainer wc = getChildAt(i); final WindowContainer wc = getChildAt(i);
if (mTaskFragmentOrganizerUid != INVALID_UID final ActivityRecord ar = wc.asActivityRecord();
&& wc.asActivityRecord() != null if (mTaskFragmentOrganizerUid != INVALID_UID && ar != null
&& wc.asActivityRecord().info.processName.equals( && ar.info.processName.equals(mTaskFragmentOrganizerProcessName)
mTaskFragmentOrganizerProcessName) && ar.getUid() == mTaskFragmentOrganizerUid && !ar.finishing) {
&& wc.asActivityRecord().getUid() == mTaskFragmentOrganizerUid) {
// Only includes Activities that belong to the organizer process for security. // Only includes Activities that belong to the organizer process for security.
childActivities.add(wc.asActivityRecord().appToken); childActivities.add(ar.appToken);
} }
} }
final Point positionInParent = new Point(); final Point positionInParent = new Point();