Search code examples
androidlocationmanager

onPause to stop LocationManager


I think I’m doing this right?

I have this code which starts looking for my GPS location via a MyLocationListener method not displayed here, that works but I want to stop the locationManager onPause, I think or whenever this activity is not current, but I can’t get the removeUpdates code to resolve.

locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);        
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, MINIMUM_TIME_BETWEEN_UPDATES, MINIMUM_DISTANCE_CHANGE_FOR_UPDATES, new MyLocationListener());

and then,

@Override 
public void onPause()
{
    super.onPause();
    locationManager.removeUpdates(MyLocationListener);
}

“MyLocationListener” wont resolve, I’ve also tried “this” and,

locationManager.removeUpdates((LocationListener) this);

Which resolves but gives me a “Cannot Pause” error at runtime.


Solution

  • I had a similar question: Having some trouble getting my GPS sensor to stop

    you might need to define a LocationListener that is the same for the one that is started and the one that is ended.

    Try:

    LocationListener mlocListener; 
    

    under the class name and then use the following in your onCreate method:

    mlocListener = new MyLocationListener();
    

    And use the above mlocListener for the whole class.

    So have your class look something like this:

    public class SomeClass extends Activity {
        LocationManager mlocManager;
        LocationListener mlocListener; 
    
    @Override
    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.screenlayout);
        mlocManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
        mlocListener = new MyLocationListener();
        mlocManager.requestLocationUpdates( LocationManager.GPS_PROVIDER, 0, 0, mlocListener);
    }
    
    @Override
    public void onPause(){
        mlocManager.removeUpdates(mlocListener);
        super.onPause();
    }