2014-07-07 4 views
1

Привет, ребята Я создал фоновое обслуживание, которое получает местоположение человека, и если расстояние между устройством до места назначения меньше, я чаще запрашиваю обновления местоположения, и я использую removeUpdates (LocationListener) метод ... проблема в том, что я заметил, что слушатель продолжает получать обновления, и чем больше цикл идет, тем больше он получает все больше обновлений. кто-нибудь знает, почему этот метод не работает?Android LocationManager.removeUpdates (LocationListener)

Вот мой метод использования нового местоположения.

void makeUseOfNewLocation(Location location){ 
    manager.removeUpdates(listener); 
    mLocation = location; 
    currentLat = location.getLatitude(); 
    currentLong = location.getLongitude(); 
    Location.distanceBetween(currentLat, currentLong, gateLat, gateLong, results); 
    try { 
     Thread.sleep(200); 
    } catch (InterruptedException e) { 
     e.printStackTrace(); 
    } 
    currentDistanceFromDestination = results[0]; 
    Log.d("Current Location", "Lat:"+currentLat+" Long:"+currentLong); 
    Log.d("Destination Distance", currentDistanceFromDestination+""); 
    if(currentDistanceFromDestination<3000){ 
     if(currentDistanceFromDestination<50){ 
      Log.d("50m closer", "Calling"); 

      startActivity(callIntent); 
      stopSelf(); 
     } 
     if(currentDistanceFromDestination<800){ 
      Log.d("800m closer", "Started listening every 10 seconds."); 
      Toast.makeText(getApplicationContext(),currentDistanceFromDestination+"", Toast.LENGTH_LONG).show(); 
      manager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 10 ,90 , listener); 
     }else{ 
      Log.d("3000m closer", "Started listening every 25 seconds"); 
      Toast.makeText(getApplicationContext(),currentDistanceFromDestination+"", Toast.LENGTH_LONG).show(); 
      manager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 25 * 1000, 300, listener); 
     } 
    } 

} 
+0

Возможно, он снова начнет прослушивать обновления, так как у вас есть 'manager.requestLocationUpdates (LocationManager.GPS_PROVIDER, 25 * 1000, 300, прослушиватель);' –

+0

hmmm ye, его предполагается слушать, и это так, но это не так удалите все обновления – NameNotFoundException

+0

Вы можете отправить весь код? –

ответ

0

Вы инициируете ценность своего слушателя между вызовами? Возможно, это не тот же объект, поэтому он не может удалить обновления. В этом случае старый слушатель все равно будет получать обновления, если вы не сможете их удалить.

Смежные вопросы