在Android中停止位置监听器

时间:2011-08-01 04:31:12

标签: android gps android-location locationlistener

在我的Android应用程序中,我需要在应用程序启动时获取用户的当前GPS位置,仅当位置与先前位置有所不同时。但问题是当我在应用程序内部时,如果位置发生变化(如果用户在使用应用程序时正在旅行)应用程序从头开始。

我需要在获取用户当前位置后停止位置监听器。 removeUpdates方法对我不起作用。

请帮我解决这个问题。 提前谢谢!

5 个答案:

答案 0 :(得分:53)

mLocManager.removeUpdates(locationListenerObject);
mLocManager = null;

当听众捕获了lat和long时,在onLocationChange方法中调用此方法。

希望我能帮助..

答案 1 :(得分:6)

您可以通过在停止LocationListener locationManager.removeUpdates(mLocListener);后将其对象设为null来停止LocationListener,当您希望它停止获取纬度和经度时,可以mLocListener = null;

答案 2 :(得分:0)

您可以通过调用方法locationManager.removeUpdates(locationListener)停止连续的位置更新。

这里是一个例子:

LocationManager locationManager; 
LocationListener locationListener;

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

// stop location updating
locationManager.removeUpdates(locationListener);

答案 3 :(得分:0)

c2.round

如果您只需要获取一次当前位置,请尝试使用此方法

locationManager.requestSingleUpdate(String provider, LocationListener listener, Looper looper);

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

停止更新

希望这行之有效,并可以帮助遇到相同问题的其他人。

答案 4 :(得分:0)

尝试一下

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) {
            }
        }