Loading services/java/com/android/server/am/BroadcastQueue.java +11 −7 Original line number Diff line number Diff line Loading @@ -470,6 +470,12 @@ public final class BroadcastQueue { r.callingPid, r.resolvedType, filter.receiverList.uid); } if (filter.receiverList.app == null || filter.receiverList.app.crashing) { Slog.w(TAG, "Skipping deliver [" + mQueueName + "] " + r + " to " + filter.receiverList + ": process crashing"); skip = true; } if (!skip) { // If this is not being sent as an ordered broadcast, then we // don't want to touch the fields that keep track of the current Loading Loading @@ -565,8 +571,8 @@ public final class BroadcastQueue { boolean isDead; synchronized (mService.mPidsSelfLocked) { isDead = (mService.mPidsSelfLocked.get( mPendingBroadcast.curApp.pid) == null); ProcessRecord proc = mService.mPidsSelfLocked.get(mPendingBroadcast.curApp.pid); isDead = proc == null || proc.crashing; } if (!isDead) { // It's still alive, so keep waiting Loading Loading @@ -650,7 +656,7 @@ public final class BroadcastQueue { new Intent(r.intent), r.resultCode, r.resultData, r.resultExtras, false, false, r.userId); // Set this to null so that the reference // (local and remote) isnt kept in the mBroadcastHistory. // (local and remote) isn't kept in the mBroadcastHistory. r.resultTo = null; } catch (RemoteException e) { Slog.w(TAG, "Failure [" Loading Loading @@ -803,10 +809,8 @@ public final class BroadcastQueue { } if (r.curApp != null && r.curApp.crashing) { // If the target process is crashing, just skip it. if (DEBUG_BROADCAST) Slog.v(TAG, "Skipping deliver ordered [" + mQueueName + "] " + r + " to " + r.curApp + ": process crashing"); Slog.w(TAG, "Skipping deliver ordered [" + mQueueName + "] " + r + " to " + r.curApp + ": process crashing"); skip = true; } Loading services/java/com/android/server/am/ProcessRecord.java +1 −1 Original line number Diff line number Diff line Loading @@ -98,7 +98,7 @@ final class ProcessRecord { boolean bad; // True if disabled in the bad process list boolean killedByAm; // True when proc has been killed by activity manager, not for RAM boolean procStateChanged; // Keep track of whether we changed 'setAdj'. String waitingToKill; // Process is waiting to be killed when in the bg; reason String waitingToKill; // Process is waiting to be killed when in the bg, and reason IBinder forcingToForeground;// Token that is forcing this process to be foreground int adjSeq; // Sequence id for identifying oom_adj assignment cycles int lruSeq; // Sequence id for identifying LRU update cycles Loading Loading
services/java/com/android/server/am/BroadcastQueue.java +11 −7 Original line number Diff line number Diff line Loading @@ -470,6 +470,12 @@ public final class BroadcastQueue { r.callingPid, r.resolvedType, filter.receiverList.uid); } if (filter.receiverList.app == null || filter.receiverList.app.crashing) { Slog.w(TAG, "Skipping deliver [" + mQueueName + "] " + r + " to " + filter.receiverList + ": process crashing"); skip = true; } if (!skip) { // If this is not being sent as an ordered broadcast, then we // don't want to touch the fields that keep track of the current Loading Loading @@ -565,8 +571,8 @@ public final class BroadcastQueue { boolean isDead; synchronized (mService.mPidsSelfLocked) { isDead = (mService.mPidsSelfLocked.get( mPendingBroadcast.curApp.pid) == null); ProcessRecord proc = mService.mPidsSelfLocked.get(mPendingBroadcast.curApp.pid); isDead = proc == null || proc.crashing; } if (!isDead) { // It's still alive, so keep waiting Loading Loading @@ -650,7 +656,7 @@ public final class BroadcastQueue { new Intent(r.intent), r.resultCode, r.resultData, r.resultExtras, false, false, r.userId); // Set this to null so that the reference // (local and remote) isnt kept in the mBroadcastHistory. // (local and remote) isn't kept in the mBroadcastHistory. r.resultTo = null; } catch (RemoteException e) { Slog.w(TAG, "Failure [" Loading Loading @@ -803,10 +809,8 @@ public final class BroadcastQueue { } if (r.curApp != null && r.curApp.crashing) { // If the target process is crashing, just skip it. if (DEBUG_BROADCAST) Slog.v(TAG, "Skipping deliver ordered [" + mQueueName + "] " + r + " to " + r.curApp + ": process crashing"); Slog.w(TAG, "Skipping deliver ordered [" + mQueueName + "] " + r + " to " + r.curApp + ": process crashing"); skip = true; } Loading
services/java/com/android/server/am/ProcessRecord.java +1 −1 Original line number Diff line number Diff line Loading @@ -98,7 +98,7 @@ final class ProcessRecord { boolean bad; // True if disabled in the bad process list boolean killedByAm; // True when proc has been killed by activity manager, not for RAM boolean procStateChanged; // Keep track of whether we changed 'setAdj'. String waitingToKill; // Process is waiting to be killed when in the bg; reason String waitingToKill; // Process is waiting to be killed when in the bg, and reason IBinder forcingToForeground;// Token that is forcing this process to be foreground int adjSeq; // Sequence id for identifying oom_adj assignment cycles int lruSeq; // Sequence id for identifying LRU update cycles Loading