Разработка Android: убить сервис

1

У меня есть работающий сервис. Но когда taskmanager убивает Activivty, который запускает службу, услуга будет убита.

Почему моя служба убивается, когда taskmanager убивает активность, а не службу?

Теги:
android-activity
service

2 ответа

0
Лучший ответ

Дополняя CommonsWare: если единственной причиной существования вашей Службы было то, что она была связана с деятельностью, когда эта деятельность убита, больше нет причины для существования службы, поэтому ее можно было бы убить.

(Я думаю в связанных службах здесь! Http://developer.android.com/guide/topics/fundamentals/services.html)

Обновить

Основываясь на вашем комментарии, я вижу, что вы используете услугу "Старт". В этом случае я рекомендую вам реализовать службу в отдельном классе, а не как внутренний класс в классе Activity. Это может быть причиной вашей проблемы.

  • 0
    ну и в основном в расширенном классе активности я добавил: startService (this.myService)
  • 0
    нет, у меня есть 2 класса, я расширяю деятельность и один расширяю сервис.
Показать ещё 6 комментариев
1

В Android нет "taskmanager", по крайней мере, под этим именем.

Если вы используете Android 2.1 или старше, сторонние приложения, которые описывают себя как "диспетчеры задач" или "убийцы задач", могут завершить весь процесс и, кроме того, избавиться от вашей службы.

Если вы используете Android 2.2 или новее, тогда как "диспетчеры задач" имеют несколько уменьшенную роль, приложение "Настройки" в ОС позволяет пользователям принудительно остановить любое приложение или отдельную службу.

IOW, то, что вы видите, совершенно нормально и что-то нужно учитывать. Пользователям не нравятся службы, работающие в течение длительного времени, если только они не воспринимают ценность от тех служб, которые там находятся. Так, например, пользователь, который убивает службу, которая воспроизводит музыку, быстро учится больше не делать этого. Но, если пользователь не знает, какое значение добавляет ваш сервис, а ваш сервис работает много, ожидайте, что он будет отключен пользователем.

В результате опытные разработчики разрабатывают свои приложения, чтобы избежать долговременных сервисов. Например, если вы проверяете Интернет на что-то (например, новое письмо) каждые 15 минут, а не на все время службы, используйте AlarmManager для запуска своего обслуживания каждые 15 минут и один раз один раз запустите службу проверка Интернета завершена. Это дает вам ту же функциональность, но большую часть времени вы не используете ее.

  • 1
    Извините, я имею в виду таскллер. потому что встроенный в HTC Sense 2.3.3 имеет приложение под названием TaskManager

Ещё вопросы

Сообщество Overcoder
Наверх
Меню