diff options
| author | Android (Google) Code Review <android-gerrit@google.com> | 2009-04-29 13:35:38 -0700 |
|---|---|---|
| committer | The Android Open Source Project <initial-contribution@android.com> | 2009-04-29 13:35:38 -0700 |
| commit | 212548f634e80f419b29f547afb9472d7353cf2b (patch) | |
| tree | ef28129cafb75dbc50e330b560f149b22ee8f155 | |
| parent | c2839e087041b16a1ee7292b85459a396c25c771 (diff) | |
| parent | 76b25e5e78dde3443f9c57c47e5989ad8ff43771 (diff) | |
| download | frameworks_base-212548f634e80f419b29f547afb9472d7353cf2b.zip frameworks_base-212548f634e80f419b29f547afb9472d7353cf2b.tar.gz frameworks_base-212548f634e80f419b29f547afb9472d7353cf2b.tar.bz2 | |
am 76b25e5: Merge change 692 into donut
Merge commit '76b25e5e78dde3443f9c57c47e5989ad8ff43771'
* commit '76b25e5e78dde3443f9c57c47e5989ad8ff43771':
location: Optimize use of mProviders ArrayList.
| -rw-r--r-- | location/java/com/android/internal/location/LocationProviderImpl.java | 5 | ||||
| -rw-r--r-- | services/java/com/android/server/LocationManagerService.java | 23 |
2 files changed, 15 insertions, 13 deletions
diff --git a/location/java/com/android/internal/location/LocationProviderImpl.java b/location/java/com/android/internal/location/LocationProviderImpl.java index 5e9c074..fc830f5 100644 --- a/location/java/com/android/internal/location/LocationProviderImpl.java +++ b/location/java/com/android/internal/location/LocationProviderImpl.java @@ -25,7 +25,6 @@ import android.util.Log; import java.util.ArrayList; import java.util.HashMap; -import java.util.List; /** * An abstract superclass for location provider implementations. @@ -62,8 +61,8 @@ public abstract class LocationProviderImpl extends LocationProvider { sProvidersByName.remove(provider.getName()); } - public static List<LocationProviderImpl> getProviders() { - return new ArrayList<LocationProviderImpl>(sProviders); + public static ArrayList<LocationProviderImpl> getProviders() { + return sProviders; } public static LocationProviderImpl getProvider(String name) { diff --git a/services/java/com/android/server/LocationManagerService.java b/services/java/com/android/server/LocationManagerService.java index 2e7f2c1..0e1e0d9 100644 --- a/services/java/com/android/server/LocationManagerService.java +++ b/services/java/com/android/server/LocationManagerService.java @@ -703,10 +703,10 @@ public class LocationManagerService extends ILocationManager.Stub implements Run if (LOCAL_LOGV) { Log.v(TAG, "getAllProviders"); } - List<LocationProviderImpl> providers = LocationProviderImpl.getProviders(); + ArrayList<LocationProviderImpl> providers = LocationProviderImpl.getProviders(); ArrayList<String> out = new ArrayList<String>(providers.size()); - - for (LocationProviderImpl p : providers) { + for (int i = providers.size() - 1; i >= 0; i--) { + LocationProviderImpl p = providers.get(i); out.add(p.getName()); } return out; @@ -729,10 +729,10 @@ public class LocationManagerService extends ILocationManager.Stub implements Run if (LOCAL_LOGV) { Log.v(TAG, "getProviders"); } - List<LocationProviderImpl> providers = LocationProviderImpl.getProviders(); - ArrayList<String> out = new ArrayList<String>(); - - for (LocationProviderImpl p : providers) { + ArrayList<LocationProviderImpl> providers = LocationProviderImpl.getProviders(); + ArrayList<String> out = new ArrayList<String>(providers.size()); + for (int i = providers.size() - 1; i >= 0; i--) { + LocationProviderImpl p = providers.get(i); String name = p.getName(); if (isAllowedProviderSafe(name)) { if (enabledOnly && !isAllowedBySettingsLocked(name)) { @@ -745,7 +745,9 @@ public class LocationManagerService extends ILocationManager.Stub implements Run } private void updateProvidersLocked() { - for (LocationProviderImpl p : LocationProviderImpl.getProviders()) { + ArrayList<LocationProviderImpl> providers = LocationProviderImpl.getProviders(); + for (int i = providers.size() - 1; i >= 0; i--) { + LocationProviderImpl p = providers.get(i); boolean isEnabled = p.isEnabled(); String name = p.getName(); boolean shouldBeEnabled = isAllowedBySettingsLocked(name); @@ -1718,8 +1720,9 @@ public class LocationManagerService extends ILocationManager.Stub implements Run // Notify location providers of current network state synchronized (mLock) { - List<LocationProviderImpl> providers = LocationProviderImpl.getProviders(); - for (LocationProviderImpl provider : providers) { + ArrayList<LocationProviderImpl> providers = LocationProviderImpl.getProviders(); + for (int i = providers.size() - 1; i >= 0; i--) { + LocationProviderImpl provider = providers.get(i); if (provider.requiresNetwork()) { provider.updateNetworkState(mNetworkState); } |
