diff options
author | Mike Lockwood <lockwood@android.com> | 2009-04-28 16:56:30 -0400 |
---|---|---|
committer | Mike Lockwood <lockwood@android.com> | 2009-04-28 21:38:06 -0400 |
commit | 662ea09a71ab241774456f7bd4791a3532904da3 (patch) | |
tree | 0ec2f476da8848d85cd4b03202f9369098b0c79e /services | |
parent | 5f2788bc9d947f7793aaea06f7e21d6b74c98826 (diff) | |
download | frameworks_base-662ea09a71ab241774456f7bd4791a3532904da3.zip frameworks_base-662ea09a71ab241774456f7bd4791a3532904da3.tar.gz frameworks_base-662ea09a71ab241774456f7bd4791a3532904da3.tar.bz2 |
location: Optimize use of mProviders ArrayList.
Signed-off-by: Mike Lockwood <lockwood@android.com>
Diffstat (limited to 'services')
-rw-r--r-- | services/java/com/android/server/LocationManagerService.java | 23 |
1 files changed, 13 insertions, 10 deletions
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); } |