diff options
Diffstat (limited to 'services/java/com/android')
-rw-r--r-- | services/java/com/android/server/LocationManagerService.java | 7 | ||||
-rw-r--r-- | services/java/com/android/server/location/GeofenceManager.java | 6 |
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) { |