Как остановить менеджер по месту местоположения?
-
11-10-2019 - |
Вопрос
Не знаю почему, но иногда LocationManager все еще работает также после закрытия заявления.
Я называю startGPS () в Methode Oncreate в одном действию (только одно, позвольте мне назвать это 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();
}
}
Некоторые идеи, некоторые предложения, что я сделал неправильно?!
Решение
Возможно ли, что ваша деятельность не разрушается? т.е. вы нажимаете кнопку домой. Переместите свой GPS Start/Stop to onStart
а также onPause
.
Другие советы
Вы должны вызвать метод removeUpdates
Внутри метода onPause
:
@Override
protected void onPause() {
super.onPause();
locationManager.removeUpdates(this);
Log.i(TAG, "onPause, done");
}
Эмулятор никогда не избавляется от значка GPS после загрузки. Следовательно, на эмуляторе вы не можете использовать значок GPS в качестве теста относительно того, работает ли GPS. На устройстве, тем не менее, значок должен исчезнуть.
Стоит ли использовать двух разных слушателей?
Я уверен, что это будет. Я не знаю, removeUpdates()
Удалит оба, или даже если оба запроса зарегистрированы с одним прослушивателем.
Я вижу, что прошло много времени с этого поста, но, возможно, это поможет какому -то телу. Я использую: removeUpdates (это), потому что мой слушатель, это деятельность, в котором я внедряю DE 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);
}