Merge "Last position improvements for GeofenceManager" into jb-mr1-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
0fb7e32a01
@@ -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)) {
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user