Как остановить location manager?
не знаю почему, но иногда LocationManager все еще работает и после закрытия приложения.
Я вызываю startGPS () в onCreate-Methode в одном действии (только один, позвольте мне назвать его StartActivity).
protected void startGPS()
{
try
{
lmanager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
lmanager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, this);
lmanager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);
}
catch(Exception e)
{
e.printStackTrace();
}
}
и если это действие будет уничтожено (так, когда приложение будет закрыто), я вызываю endGPS ()
public void endGPS()
{
try
{
lmanager.removeUpdates(this);
lmanager=null;
}
catch(Exception e)
{
e.printStackTrace();
}
}
некоторые идеи, некоторые предложения, что я сделал не так?!
5 ответов
возможно ли, что ваша деятельность не разрушается? т. е.: вы нажимаете кнопку "Домой". Переместите gps start / stop в onStart
и onPause
.
вы должны вызвать метод removeUpdates
внутри метода onPause
:
@Override
protected void onPause() {
super.onPause();
locationManager.removeUpdates(this);
Log.i(TAG, "onPause, done");
}
эмулятор никогда не избавляется от значка GPS после загрузки. Следовательно, на эмуляторе вы не можете использовать значок GPS в качестве теста на то, работает ли GPS. Однако на устройстве значок должен исчезнуть.
должен ли я использовать два разных слушателя?
Я уверен, что будет. Я не знаю,removeUpdates()
удалит оба, или даже если оба запроса зарегистрированы с одним слушателем.
Я вижу, что прошло некоторое время с этого поста, но, возможно, это поможет какому-то другому телу. Я использую: removeUpdates (this), потому что мой слушатель-это действие, в котором я реализую de location manager, вам нужно указать своего слушателя.
Я использую: locationManager.removeUpdates (locationListener); его работа
@Override
protected void onPause() {
super.onPause();
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
// TODO: Consider calling
// ActivityCompat#requestPermissions
// here to request the missing permissions, and then overriding
// public void onRequestPermissionsResult(int requestCode, String[] permissions,
// int[] grantResults)
// to handle the case where the user grants the permission. See the documentation
// for ActivityCompat#requestPermissions for more details.
return;
}
locationManager.removeUpdates(locationListener);
}