diff options
| author | 2016-07-15 13:54:42 -0400 | |
|---|---|---|
| committer | 2016-07-15 13:54:42 -0400 | |
| commit | e8ff0da78c2bcfe286f0ee89a745c24cc346a9a0 (patch) | |
| tree | 3d45d85d5cd98673dae38f3b53ec822074a1b9f4 | |
| parent | 3ed2a52bb108813b871edbce4496339573c936f0 (diff) | |
Reduce contention of ApplicationsState locks
Change-Id: I5b2ad52b014eea5bdf77526554eb10f4ba303105
Fixes: 30113789
| -rw-r--r-- | packages/SettingsLib/src/com/android/settingslib/applications/ApplicationsState.java | 24 |
1 files changed, 4 insertions, 20 deletions
diff --git a/packages/SettingsLib/src/com/android/settingslib/applications/ApplicationsState.java b/packages/SettingsLib/src/com/android/settingslib/applications/ApplicationsState.java index 739245330d7c..16bfc56d5a4c 100644 --- a/packages/SettingsLib/src/com/android/settingslib/applications/ApplicationsState.java +++ b/packages/SettingsLib/src/com/android/settingslib/applications/ApplicationsState.java @@ -582,10 +582,10 @@ public class ApplicationsState { public ArrayList<AppEntry> rebuild(AppFilter filter, Comparator<AppEntry> comparator, boolean foreground) { synchronized (mRebuildSync) { - synchronized (mEntriesMap) { + synchronized (mRebuildingSessions) { mRebuildingSessions.add(this); mRebuildRequested = true; - mRebuildAsync = false; + mRebuildAsync = true; mRebuildFilter = filter; mRebuildComparator = comparator; mRebuildForeground = foreground; @@ -597,23 +597,7 @@ public class ApplicationsState { } } - // We will wait for .25s for the list to be built. - long waitend = SystemClock.uptimeMillis()+250; - - while (mRebuildResult == null) { - long now = SystemClock.uptimeMillis(); - if (now >= waitend) { - break; - } - try { - mRebuildSync.wait(waitend - now); - } catch (InterruptedException e) { - } - } - - mRebuildAsync = true; - - return mRebuildResult; + return null; } } @@ -776,7 +760,7 @@ public class ApplicationsState { public void handleMessage(Message msg) { // Always try rebuilding list first thing, if needed. ArrayList<Session> rebuildingSessions = null; - synchronized (mEntriesMap) { + synchronized (mRebuildingSessions) { if (mRebuildingSessions.size() > 0) { rebuildingSessions = new ArrayList<Session>(mRebuildingSessions); mRebuildingSessions.clear(); |