summaryrefslogtreecommitdiffstats
path: root/services/java/com/android
diff options
context:
space:
mode:
Diffstat (limited to 'services/java/com/android')
-rw-r--r--services/java/com/android/server/LocationManagerService.java7
-rw-r--r--services/java/com/android/server/location/GeofenceManager.java6
2 files changed, 7 insertions, 6 deletions
diff --git a/services/java/com/android/server/LocationManagerService.java b/services/java/com/android/server/LocationManagerService.java
index 0087b57..e73d599 100644
--- a/services/java/com/android/server/LocationManagerService.java
+++ b/services/java/com/android/server/LocationManagerService.java
@@ -1414,9 +1414,8 @@ public class LocationManagerService extends ILocationManager.Stub implements Run
long now = SystemClock.elapsedRealtime();
String provider = (passive ? LocationManager.PASSIVE_PROVIDER : location.getProvider());
- ArrayList<UpdateRecord> records = mRecordsByProvider.get(provider);
- if (records == null || records.size() == 0) return;
+ // Skip if the provider is unknown.
LocationProviderInterface p = mProvidersByName.get(provider);
if (p == null) return;
@@ -1437,6 +1436,10 @@ public class LocationManagerService extends ILocationManager.Stub implements Run
}
lastLocation.set(location);
+ // Skip if there are no UpdateRecords for this provider.
+ ArrayList<UpdateRecord> records = mRecordsByProvider.get(provider);
+ if (records == null || records.size() == 0) return;
+
// Fetch coarse location
Location coarseLocation = null;
if (noGPSLocation != null && !noGPSLocation.equals(lastNoGPSLocation)) {
diff --git a/services/java/com/android/server/location/GeofenceManager.java b/services/java/com/android/server/location/GeofenceManager.java
index 26d9c15..d04d2f3 100644
--- a/services/java/com/android/server/location/GeofenceManager.java
+++ b/services/java/com/android/server/location/GeofenceManager.java
@@ -58,7 +58,6 @@ public class GeofenceManager implements LocationListener, PendingIntent.OnFinish
private Object mLock = new Object();
// access to members below is synchronized on mLock
- private Location mLastLocation;
private List<GeofenceState> mFences = new LinkedList<GeofenceState>();
public GeofenceManager(Context context, LocationBlacklist blacklist) {
@@ -77,7 +76,8 @@ public class GeofenceManager implements LocationListener, PendingIntent.OnFinish
public void addFence(LocationRequest request, Geofence geofence, PendingIntent intent, int uid,
String packageName) {
- GeofenceState state = new GeofenceState(geofence, mLastLocation,
+ Location lastLocation = mLocationManager.getLastLocation();
+ GeofenceState state = new GeofenceState(geofence, lastLocation,
request.getExpireAt(), packageName, intent);
synchronized (mLock) {
@@ -146,8 +146,6 @@ public class GeofenceManager implements LocationListener, PendingIntent.OnFinish
List<PendingIntent> exitIntents = new LinkedList<PendingIntent>();
synchronized (mLock) {
- mLastLocation = location;
-
removeExpiredFencesLocked();
for (GeofenceState state : mFences) {