Stop Location Listener in Android
Asked Answered
T

5

27

In my android app I need to get current GPS location of the user at the start of the application only if location has change from the previous location. But the problem is when I inside the application if location change (ie If user was traveling while using the app) app is starting from the beginning.

I need to stop location listener after getting user current location. removeUpdates method didn't work for me.

Please help me on this issue. thanks in advance !

Thrown answered 1/8, 2011 at 4:31 Comment(1)
removeUpdates is the way to go, can you show some code as to why it did not work.Bathe
T
59
mLocManager.removeUpdates(locationListenerObject);
mLocManager = null;

Call this inside your onLocationChange Method when lat and long has been captured by the listener.

Hope I helped..

Tricorn answered 1/8, 2011 at 10:24 Comment(2)
It might take some time for the onLocationChange method to be called. Around 1 sec might be. Right?Discus
thx this works. the weird thing is that the .removeUpdates() wants us to ask for permissions!Cookout
R
6

You can stop the LocationListener by making its object to null after stoping LocationListener locationManager.removeUpdates(mLocListener);, that is mLocListener = null; when you want it to stop fetching the Latitudes and Longitudes.

Reflect answered 1/8, 2011 at 5:27 Comment(2)
I just tried this on a actual device and it does not remove the listening for updatesCookout
Out of curiosity, why is setting the listener to null necessary if we already called removeUpdates(locationListener l)?Batson
M
0

You can stop continuous location updating by calling method locationManager.removeUpdates(locationListener).

Here is an example :

LocationManager locationManager; 
LocationListener locationListener;

// for location updates 
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener);

// stop location updating
locationManager.removeUpdates(locationListener);
Meagher answered 14/10, 2018 at 22:28 Comment(0)
F
0
locationManager.requestSingleUpdate(String provider, LocationListener listener, Looper looper);

If you only need to get the current location once, try this method instead using

locationManager.requestLocationUpdates(String provider, long minTimeMs, float minDistanceM, LocationListener listener)

and stop the update using locationManager.removeUpdates(LocationListener listener)

hope this works and help others with same problem.

Flynn answered 5/3, 2020 at 5:44 Comment(0)
D
0

Try This

locationManager = activity!!.getSystemService(Context.LOCATION_SERVICE) as LocationManager

locationListener = object : LocationListener {
            override fun onLocationChanged(location: Location) {
                if (location != null) {
                    Log.e(
                        "LOCATION",
                        "Latitude " + location.latitude.toString() + "  | Longitude :" + location.longitude.toString()
                    )
                    if (locationListener != null)
                        locationManager!!.removeUpdates(locationListener!!)
                }
                //Toast.makeText(getApplicationContext(),location.toString(),Toast.LENGTH_SHORT).show();
            }

            override fun onStatusChanged(provider: String, status: Int, extras: Bundle) {
            }

            override fun onProviderEnabled(provider: String) {
            }

            override fun onProviderDisabled(provider: String) {
            }
        }
Dash answered 5/3, 2020 at 6:7 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.