Merge change 692 into donut
* changes: location: Optimize use of mProviders ArrayList.
This commit is contained in:
@@ -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) {
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user