diff options
| author | 2012-10-08 15:14:49 -0700 | |
|---|---|---|
| committer | 2012-10-08 15:14:49 -0700 | |
| commit | 0fb7e32a0129e9e62d58ea652cc00f8a908d65b5 (patch) | |
| tree | 7721d21b29b9b2e91bed8ccee55dc5a4d0ce298f | |
| parent | 55c7029312f67a80c658fa84bd404ef7569d02d8 (diff) | |
| parent | 60ec50a850ac7265b662df3c872583b6ef581ef8 (diff) | |
Merge "Last position improvements for GeofenceManager" into jb-mr1-dev
| -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 0087b57456d2..e73d599297aa 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 26d9c1555774..d04d2f32d46e 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) { |