Merge "[ActivityManager] Reduce report wrong anr activity"
This commit is contained in:
@@ -982,24 +982,21 @@ final class ActivityRecord {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private ActivityRecord getWaitingHistoryRecordLocked() {
|
private ActivityRecord getWaitingHistoryRecordLocked() {
|
||||||
// First find the real culprit... if we are waiting
|
// First find the real culprit... if this activity is waiting for
|
||||||
// for another app to start, then we have paused dispatching
|
// another activity to start or has stopped, then the key dispatching
|
||||||
// for this activity.
|
// timeout should not be caused by this.
|
||||||
ActivityRecord r = this;
|
if (waitingVisible || stopped) {
|
||||||
if (r.waitingVisible) {
|
|
||||||
final ActivityStack stack = mStackSupervisor.getFocusedStack();
|
final ActivityStack stack = mStackSupervisor.getFocusedStack();
|
||||||
// Hmmm, who might we be waiting for?
|
// Try to use the one which is closest to top.
|
||||||
r = stack.mResumedActivity;
|
ActivityRecord r = stack.mResumedActivity;
|
||||||
if (r == null) {
|
if (r == null) {
|
||||||
r = stack.mPausingActivity;
|
r = stack.mPausingActivity;
|
||||||
}
|
}
|
||||||
// Both of those null? Fall back to 'this' again
|
if (r != null) {
|
||||||
if (r == null) {
|
return r;
|
||||||
r = this;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return this;
|
||||||
return r;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean keyDispatchingTimedOut(String reason) {
|
public boolean keyDispatchingTimedOut(String reason) {
|
||||||
|
|||||||
@@ -607,17 +607,21 @@ public final class ActivityStackSupervisor implements DisplayListener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
boolean allResumedActivitiesVisible() {
|
boolean allResumedActivitiesVisible() {
|
||||||
|
boolean foundResumed = false;
|
||||||
for (int displayNdx = mActivityDisplays.size() - 1; displayNdx >= 0; --displayNdx) {
|
for (int displayNdx = mActivityDisplays.size() - 1; displayNdx >= 0; --displayNdx) {
|
||||||
ArrayList<ActivityStack> stacks = mActivityDisplays.valueAt(displayNdx).mStacks;
|
ArrayList<ActivityStack> stacks = mActivityDisplays.valueAt(displayNdx).mStacks;
|
||||||
for (int stackNdx = stacks.size() - 1; stackNdx >= 0; --stackNdx) {
|
for (int stackNdx = stacks.size() - 1; stackNdx >= 0; --stackNdx) {
|
||||||
final ActivityStack stack = stacks.get(stackNdx);
|
final ActivityStack stack = stacks.get(stackNdx);
|
||||||
final ActivityRecord r = stack.mResumedActivity;
|
final ActivityRecord r = stack.mResumedActivity;
|
||||||
if (r != null && (!r.nowVisible || r.waitingVisible)) {
|
if (r != null) {
|
||||||
return false;
|
if (!r.nowVisible || r.waitingVisible) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
foundResumed = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return foundResumed;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user