diff options
author | Jorim Jaggi <jjaggi@google.com> | 2014-07-28 13:22:34 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2014-07-24 15:35:58 +0000 |
commit | 8a9068573c8f2f038d1eebbe9ccad18bc291f5ce (patch) | |
tree | e3c39ad35a9d2a63191d89618d7983d76ab2914c /services | |
parent | ddbce3263270c3b66c377be2d9f388fc11b23483 (diff) | |
parent | 0d266899da8f612194a8393ec69c4fd870f2f45c (diff) | |
download | frameworks_base-8a9068573c8f2f038d1eebbe9ccad18bc291f5ce.zip frameworks_base-8a9068573c8f2f038d1eebbe9ccad18bc291f5ce.tar.gz frameworks_base-8a9068573c8f2f038d1eebbe9ccad18bc291f5ce.tar.bz2 |
Merge "Fix status icon reappearing for legacy activities" into lmp-dev
Diffstat (limited to 'services')
3 files changed, 24 insertions, 6 deletions
diff --git a/services/core/java/com/android/server/am/ActivityStack.java b/services/core/java/com/android/server/am/ActivityStack.java index 1c0057b..d069dfe 100755 --- a/services/core/java/com/android/server/am/ActivityStack.java +++ b/services/core/java/com/android/server/am/ActivityStack.java @@ -1052,6 +1052,14 @@ final class ActivityStack { next.idle = false; next.results = null; next.newIntents = null; + + if (next.isHomeActivity() && next.isNotResolverActivity()) { + ProcessRecord app = next.task.mActivities.get(0).app; + if (app != null && app != mService.mHomeProcess) { + mService.mHomeProcess = app; + } + } + if (next.nowVisible) { // We won't get a call to reportActivityVisibleLocked() so dismiss lockscreen now. mStackSupervisor.dismissKeyguard(); @@ -2067,6 +2075,8 @@ final class ActivityStack { final int rootActivityNdx = task.findEffectiveRootIndex(); for (int i = numActivities - 1; i > rootActivityNdx; --i ) { ActivityRecord target = activities.get(i); + if (target.frontOfTask) + break; final int flags = target.info.flags; final boolean finishOnTaskLaunch = @@ -2223,6 +2233,8 @@ final class ActivityStack { // Do not operate on or below the effective root Activity. for (int i = numActivities - 1; i > rootActivityNdx; --i) { ActivityRecord target = activities.get(i); + if (target.frontOfTask) + break; final int flags = target.info.flags; boolean finishOnTaskLaunch = (flags & ActivityInfo.FLAG_FINISH_ON_TASK_LAUNCH) != 0; diff --git a/services/core/java/com/android/server/am/BroadcastQueue.java b/services/core/java/com/android/server/am/BroadcastQueue.java index cdcc74b..4e554eb 100644 --- a/services/core/java/com/android/server/am/BroadcastQueue.java +++ b/services/core/java/com/android/server/am/BroadcastQueue.java @@ -424,11 +424,16 @@ public final class BroadcastQueue { Intent intent, int resultCode, String data, Bundle extras, boolean ordered, boolean sticky, int sendingUser) throws RemoteException { // Send the intent to the receiver asynchronously using one-way binder calls. - if (app != null && app.thread != null) { - // If we have an app thread, do the call through that so it is - // correctly ordered with other one-way calls. - app.thread.scheduleRegisteredReceiver(receiver, intent, resultCode, - data, extras, ordered, sticky, sendingUser, app.repProcState); + if (app != null) { + if (app.thread != null) { + // If we have an app thread, do the call through that so it is + // correctly ordered with other one-way calls. + app.thread.scheduleRegisteredReceiver(receiver, intent, resultCode, + data, extras, ordered, sticky, sendingUser, app.repProcState); + } else { + // Application has died. Receiver doesn't exist. + throw new RemoteException("app.thread must not be null"); + } } else { receiver.performReceive(intent, resultCode, data, extras, ordered, sticky, sendingUser); @@ -670,6 +675,7 @@ public final class BroadcastQueue { // (local and remote) isn't kept in the mBroadcastHistory. r.resultTo = null; } catch (RemoteException e) { + r.resultTo = null; Slog.w(TAG, "Failure [" + mQueueName + "] sending broadcast result of " + r.intent, e); diff --git a/services/core/java/com/android/server/trust/TrustManagerService.java b/services/core/java/com/android/server/trust/TrustManagerService.java index 6f72b94..14436aa 100644 --- a/services/core/java/com/android/server/trust/TrustManagerService.java +++ b/services/core/java/com/android/server/trust/TrustManagerService.java @@ -372,7 +372,7 @@ public class TrustManagerService extends SystemService { private void removeListener(ITrustListener listener) { for (int i = 0; i < mTrustListeners.size(); i++) { if (mTrustListeners.get(i).asBinder() == listener.asBinder()) { - mTrustListeners.get(i); + mTrustListeners.remove(i); return; } } |