Остановите все запущенные сервисы при закрытии / выходе приложения - PullRequest
6 голосов
/ 18 апреля 2010

Можно ли остановить все запущенные службы, когда пользователь нажмет кнопку «Домой»?

Я использую:

startService(new Intent(ClassName.this, ClassName2.class));
stopService(new Intent(ClassName.this, ClassName2.class));

Это означает, что мне нужно будет как-то добавить 'stopService ()' для 7+ моих классов приложений. Я исследовал эту тему, и я думаю, что есть «onTerminate», но все еще не уверен, как это следует реализовать.

Любая помощь или советы будут оценены! Спасибо!

Ответы [ 2 ]

16 голосов
/ 18 апреля 2010

Можно ли остановить все запущенное услуги, когда пользователь попадает в Дом Кнопка

Не напрямую. Для начала, вы не можете знать, что они нажали HOME.

Если вы хотите, чтобы служба работала только во время ее использования, рассмотрите возможность избавления от startService(). Вместо этого используйте bindService() в onStart() методах действий, которые нуждаются в услуге, и вызовите unbindService() в их соответствующих onStop() методах. Вы можете использовать BIND_AUTO_CREATE, чтобы при необходимости запускать службу лениво, а Android автоматически останавливает службу после того, как все соединения были разорваны.

2 голосов
/ 18 апреля 2010

Если вы хотите, чтобы сервисы останавливались, когда пользователь покидает ваше приложение, я бы спросил, хотите ли вы вообще использовать сервисы. Возможно, вы просто делаете свое приложение более сложным, чем нужно.

Кроме того, эта строка действительно сомнительна:

startService(new Intent(ClassName.this, ClassName2.class));

Вы создаете Intent, действие которого является именем класса одного класса, а data URI является именем класса другого класса ...! Может быть, вы имеете в виду что-то вроде «нового намерения (context, MyService.class)»?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...