Merge change 692 into donut

* changes:
  location: Optimize use of mProviders ArrayList.
This commit is contained in:
Android (Google) Code Review
2009-04-28 19:02:27 -07:00
2 changed files with 15 additions and 13 deletions

View File

@@ -25,7 +25,6 @@ import android.util.Log;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List;
/** /**
* An abstract superclass for location provider implementations. * An abstract superclass for location provider implementations.
@@ -62,8 +61,8 @@ public abstract class LocationProviderImpl extends LocationProvider {
sProvidersByName.remove(provider.getName()); sProvidersByName.remove(provider.getName());
} }
public static List<LocationProviderImpl> getProviders() { public static ArrayList<LocationProviderImpl> getProviders() {
return new ArrayList<LocationProviderImpl>(sProviders); return sProviders;
} }
public static LocationProviderImpl getProvider(String name) { public static LocationProviderImpl getProvider(String name) {

View File

@@ -703,10 +703,10 @@ public class LocationManagerService extends ILocationManager.Stub implements Run
if (LOCAL_LOGV) { if (LOCAL_LOGV) {
Log.v(TAG, "getAllProviders"); Log.v(TAG, "getAllProviders");
} }
List<LocationProviderImpl> providers = LocationProviderImpl.getProviders(); ArrayList<LocationProviderImpl> providers = LocationProviderImpl.getProviders();
ArrayList<String> out = new ArrayList<String>(providers.size()); ArrayList<String> out = new ArrayList<String>(providers.size());
for (int i = providers.size() - 1; i >= 0; i--) {
for (LocationProviderImpl p : providers) { LocationProviderImpl p = providers.get(i);
out.add(p.getName()); out.add(p.getName());
} }
return out; return out;
@@ -729,10 +729,10 @@ public class LocationManagerService extends ILocationManager.Stub implements Run
if (LOCAL_LOGV) { if (LOCAL_LOGV) {
Log.v(TAG, "getProviders"); Log.v(TAG, "getProviders");
} }
List<LocationProviderImpl> providers = LocationProviderImpl.getProviders(); ArrayList<LocationProviderImpl> providers = LocationProviderImpl.getProviders();
ArrayList<String> out = new ArrayList<String>(); ArrayList<String> out = new ArrayList<String>(providers.size());
for (int i = providers.size() - 1; i >= 0; i--) {
for (LocationProviderImpl p : providers) { LocationProviderImpl p = providers.get(i);
String name = p.getName(); String name = p.getName();
if (isAllowedProviderSafe(name)) { if (isAllowedProviderSafe(name)) {
if (enabledOnly && !isAllowedBySettingsLocked(name)) { if (enabledOnly && !isAllowedBySettingsLocked(name)) {
@@ -745,7 +745,9 @@ public class LocationManagerService extends ILocationManager.Stub implements Run
} }
private void updateProvidersLocked() { 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(); boolean isEnabled = p.isEnabled();
String name = p.getName(); String name = p.getName();
boolean shouldBeEnabled = isAllowedBySettingsLocked(name); boolean shouldBeEnabled = isAllowedBySettingsLocked(name);
@@ -1718,8 +1720,9 @@ public class LocationManagerService extends ILocationManager.Stub implements Run
// Notify location providers of current network state // Notify location providers of current network state
synchronized (mLock) { synchronized (mLock) {
List<LocationProviderImpl> providers = LocationProviderImpl.getProviders(); ArrayList<LocationProviderImpl> providers = LocationProviderImpl.getProviders();
for (LocationProviderImpl provider : providers) { for (int i = providers.size() - 1; i >= 0; i--) {
LocationProviderImpl provider = providers.get(i);
if (provider.requiresNetwork()) { if (provider.requiresNetwork()) {
provider.updateNetworkState(mNetworkState); provider.updateNetworkState(mNetworkState);
} }