diff options
author | Dianne Hackborn <hackbod@google.com> | 2010-03-12 16:46:46 -0800 |
---|---|---|
committer | Dianne Hackborn <hackbod@google.com> | 2010-03-12 16:46:46 -0800 |
commit | 5c83a5f2cc3793819d0d3568b1f3a19333afdd13 (patch) | |
tree | 0237073f35a6038a954b66cbdb54b94f09b364a3 /services | |
parent | 061d58a10122b2ef56d4c2ed46090add16fb5b17 (diff) | |
parent | 2ecce34f2f05447bed6d798a4fe906fed4cbd7d9 (diff) | |
download | frameworks_base-5c83a5f2cc3793819d0d3568b1f3a19333afdd13.zip frameworks_base-5c83a5f2cc3793819d0d3568b1f3a19333afdd13.tar.gz frameworks_base-5c83a5f2cc3793819d0d3568b1f3a19333afdd13.tar.bz2 |
resolved conflicts for merge of 2ecce34f to master
Change-Id: Ic4e38199beaf8c16f9d28ac5296e8aaa61788b36
Diffstat (limited to 'services')
-rw-r--r-- | services/java/com/android/server/am/ActivityManagerService.java | 67 |
1 files changed, 39 insertions, 28 deletions
diff --git a/services/java/com/android/server/am/ActivityManagerService.java b/services/java/com/android/server/am/ActivityManagerService.java index b6064e8..a437d95 100644 --- a/services/java/com/android/server/am/ActivityManagerService.java +++ b/services/java/com/android/server/am/ActivityManagerService.java @@ -3516,7 +3516,7 @@ public final class ActivityManagerService extends ActivityManagerNative implemen if (DEBUG_TASKS) Slog.v(TAG, "Starting new activity " + r + " in new task " + r.task); newTask = true; - addRecentTask(r.task); + addRecentTaskLocked(r.task); } else if (sourceRecord != null) { if (!addingToTask && @@ -3891,7 +3891,7 @@ public final class ActivityManagerService extends ActivityManagerNative implemen } } - private final void addRecentTask(TaskRecord task) { + private final void addRecentTaskLocked(TaskRecord task) { // Remove any existing entries that are the same kind of task. int N = mRecentTasks.size(); for (int i=0; i<N; i++) { @@ -4939,9 +4939,11 @@ public final class ActivityManagerService extends ActivityManagerNative implemen Intent intent = new Intent(Intent.ACTION_PACKAGE_DATA_CLEARED, Uri.fromParts("package", packageName, null)); intent.putExtra(Intent.EXTRA_UID, pkgUid); - broadcastIntentLocked(null, null, intent, - null, null, 0, null, null, null, - false, false, MY_PID, Process.SYSTEM_UID); + synchronized (this) { + broadcastIntentLocked(null, null, intent, + null, null, 0, null, null, null, + false, false, MY_PID, Process.SYSTEM_UID); + } } catch (RemoteException e) { } } finally { @@ -7001,7 +7003,7 @@ public final class ActivityManagerService extends ActivityManagerNative implemen taskTopI = -1; } replyChainEnd = -1; - addRecentTask(target.task); + addRecentTaskLocked(target.task); } else if (forceReset || finishOnTaskLaunch || clearWhenTaskReset) { // If the activity should just be removed -- either @@ -7223,7 +7225,7 @@ public final class ActivityManagerService extends ActivityManagerNative implemen moved.add(0, r); top--; if (first) { - addRecentTask(r.task); + addRecentTaskLocked(r.task); first = false; } } @@ -7248,11 +7250,11 @@ public final class ActivityManagerService extends ActivityManagerNative implemen mWindowManager.validateAppTokens(mHistory); } - finishTaskMove(task); + finishTaskMoveLocked(task); EventLog.writeEvent(EventLogTags.AM_TASK_TO_FRONT, task); } - private final void finishTaskMove(int task) { + private final void finishTaskMoveLocked(int task) { resumeTopActivityLocked(null); } @@ -7370,7 +7372,7 @@ public final class ActivityManagerService extends ActivityManagerNative implemen mWindowManager.validateAppTokens(mHistory); } - finishTaskMove(task); + finishTaskMoveLocked(task); return true; } @@ -8002,19 +8004,24 @@ public final class ActivityManagerService extends ActivityManagerNative implemen } public static final void installSystemProviders() { - ProcessRecord app = mSelf.mProcessNames.get("system", Process.SYSTEM_UID); - List providers = mSelf.generateApplicationProvidersLocked(app); - if (providers != null) { - for (int i=providers.size()-1; i>=0; i--) { - ProviderInfo pi = (ProviderInfo)providers.get(i); - if ((pi.applicationInfo.flags&ApplicationInfo.FLAG_SYSTEM) == 0) { - Slog.w(TAG, "Not installing system proc provider " + pi.name - + ": not system .apk"); - providers.remove(i); + List providers; + synchronized (mSelf) { + ProcessRecord app = mSelf.mProcessNames.get("system", Process.SYSTEM_UID); + providers = mSelf.generateApplicationProvidersLocked(app); + if (providers != null) { + for (int i=providers.size()-1; i>=0; i--) { + ProviderInfo pi = (ProviderInfo)providers.get(i); + if ((pi.applicationInfo.flags&ApplicationInfo.FLAG_SYSTEM) == 0) { + Slog.w(TAG, "Not installing system proc provider " + pi.name + + ": not system .apk"); + providers.remove(i); + } } } } - mSystemThread.installSystemProviders(providers); + if (providers != null) { + mSystemThread.installSystemProviders(providers); + } } // ========================================================= @@ -8297,11 +8304,15 @@ public final class ActivityManagerService extends ActivityManagerNative implemen } public void registerActivityWatcher(IActivityWatcher watcher) { - mWatchers.register(watcher); + synchronized (this) { + mWatchers.register(watcher); + } } public void unregisterActivityWatcher(IActivityWatcher watcher) { - mWatchers.unregister(watcher); + synchronized (this) { + mWatchers.unregister(watcher); + } } public final void enterSafeMode() { @@ -11937,7 +11948,7 @@ public final class ActivityManagerService extends ActivityManagerNative implemen // BROADCASTS // ========================================================= - private final List getStickies(String action, IntentFilter filter, + private final List getStickiesLocked(String action, IntentFilter filter, List cur) { final ContentResolver resolver = mContext.getContentResolver(); final ArrayList<Intent> list = mStickyBroadcasts.get(action); @@ -11989,10 +12000,10 @@ public final class ActivityManagerService extends ActivityManagerNative implemen if (actions != null) { while (actions.hasNext()) { String action = (String)actions.next(); - allSticky = getStickies(action, filter, allSticky); + allSticky = getStickiesLocked(action, filter, allSticky); } } else { - allSticky = getStickies(null, filter, allSticky); + allSticky = getStickiesLocked(null, filter, allSticky); } // The first sticky in the list is returned directly back to @@ -13840,7 +13851,7 @@ public final class ActivityManagerService extends ActivityManagerNative implemen /** * Returns true if things are idle enough to perform GCs. */ - private final boolean canGcNow() { + private final boolean canGcNowLocked() { return mParallelBroadcasts.size() == 0 && mOrderedBroadcasts.size() == 0 && (mSleeping || (mResumedActivity != null && @@ -13856,7 +13867,7 @@ public final class ActivityManagerService extends ActivityManagerNative implemen if (N <= 0) { return; } - if (canGcNow()) { + if (canGcNowLocked()) { while (mProcessesToGc.size() > 0) { ProcessRecord proc = mProcessesToGc.remove(0); if (proc.curRawAdj > VISIBLE_APP_ADJ || proc.reportLowMemory) { @@ -13884,7 +13895,7 @@ public final class ActivityManagerService extends ActivityManagerNative implemen * If all looks good, perform GCs on all processes waiting for them. */ final void performAppGcsIfAppropriateLocked() { - if (canGcNow()) { + if (canGcNowLocked()) { performAppGcsLocked(); return; } |