Не могу остановить Service.

Ответить
Vovich
Сообщения: 30
Зарегистрирован: 30 май 2013, 15:03

Не могу остановить Service.

Сообщение Vovich » 06 июн 2013, 16:19

Здраствуйте.
Хочу получать данные GPS в Service.
в главной Activity 2 кнопки - запуск и остановка сервиса.

Код: Выделить всё

	public void onClickStart(View v) {
		startService (new Intent(this, MyService.class));
	}
	
	public void onClickStop(View v) {
		stopService (new Intent(this, MyService.class));
	}
Сервис запускается нормально.
В нем начинаю работу с GPS и отрабатываю получение координат

Код: Выделить всё

	public int onStartCommand(Intent intent, int flags, int startId) {
		myManager = (LocationManager) getSystemService(LOCATION_SERVICE);
		myManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 10000, 5, this);	

		return super.onStartCommand(intent, flags, startId);
	}

	public void onLocationChanged(Location location) {
		// TODO Auto-generated method stub
		  Toast.makeText(this, "Сработал GPS", Toast.LENGTH_LONG).show();
	}
Спутники ловятся, периодически появляется Toast.
Но при нажатии кнопки Стоп в главной активити, остановки сервиса не происходит.
Значек GPS остается и Toast дальше появляется.

Подскажите, плиз, как сервис все-таки остановить.
В общем задача стоит так - в фоне получать координаты и писать их в базу. Запись в базу планирую организовать через поток, вызываемый из этого сервиса.

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Не могу остановить Service.

Сообщение Foenix » 06 июн 2013, 18:48

извини, с сервисами не работала, но прочитав 2 первые строчки урока 93
http://startandroid.ru/ru/uroki/vse-uro ... rvisa.html
поняла, что останавливается он другой командой тоже, может ее попробовать?..
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Vovich
Сообщения: 30
Зарегистрирован: 30 май 2013, 15:03

Re: Не могу остановить Service.

Сообщение Vovich » 07 июн 2013, 08:59

Там немного не тот случай. Сервис выполнил работу и остановил себя (в случае с GPS можно сколь угодно долго получать координаты). Я хочу из Activity запускать сервис кнопкой, а когда надо - другой кнопкой (из той же Activity) его останавливать.

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: Не могу остановить Service.

Сообщение Mikhail_dev » 07 июн 2013, 09:18

Первое
[syntax=java]
public int onCreate() {
myManager = (LocationManager) getSystemService(LOCATION_SERVICE);
myManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 10000, 5, this);
}
[/syntax]
Делай лучше запуск GPS в onCreate, а не в onStartCommand, потому что onStartCommand срабатывает всегда при повторных нажатиях, а onCreate не сработает второй раз, если сервис уже запущен.
Второе. При остановке сервиса, в его методе onDestroy() производи остановку всех вещей сервиса. Это могут быть какие-то слушатели. Останавливай и получение координат
locationManager.removeUpdates(this);

Vovich
Сообщения: 30
Зарегистрирован: 30 май 2013, 15:03

Re: Не могу остановить Service.

Сообщение Vovich » 07 июн 2013, 11:10

Спасибо за помощь. Попробую. А кнопка - это пока учусь.
и все-таки
locationManager.removeUpdates(this) - надо выполнять в сервисе, где он и запущен.
Если бы я запускал GPS из Activity понятно. Одной кнопкой запустил, другой остановил.

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: Не могу остановить Service.

Сообщение Mikhail_dev » 07 июн 2013, 12:00

Да, я именно это и имел ввиду, в onDestroy() самого сервиса. Наверное просто не так выразился. Этот метод есть как в активити, так и в сервисе
Т.е.
[syntax=java]
@Override
public void onDestroy() {
//отключение тут всех слушателей, а после
locationManager.removeUpdates(this)
super.onDestroy();
}
[/syntax]

Vovich
Сообщения: 30
Зарегистрирован: 30 май 2013, 15:03

Re: Не могу остановить Service.

Сообщение Vovich » 07 июн 2013, 12:14

понял!

подтормаживаю...

Спасибо. Четко сработало.

Cobimen
Сообщения: 7
Зарегистрирован: 29 сен 2014, 23:01

Re: Не могу остановить Service.

Сообщение Cobimen » 29 сен 2014, 23:36

stopService(new Intent(this, Service.class))

Ответить