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:
committed by
Android (Google) Code Review
commit
2df58a479c
@@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
Reference in New Issue
Block a user