Сервисы Android: жизненный цикл - PullRequest
5 голосов
/ 03 августа 2011

Я делаю приложение для Android, которое будет иметь две службы, которые будут отправлять данные об использовании телефона пользователем каждые 24 часа.

Пользователь должен запустить приложение, переключая кнопки, чтобы включитьрегистрация использования телефона, а затем пользователь должен иметь возможность вести нормальную жизнь со своим телефоном, пока он снова не запустит приложение и не отключит кнопку переключения, чтобы остановить запись информации.

  • Какие соображения мне следует принять в отношении жизненного цикла услуг?
  • А как насчет взаимодействия пользователя с телефоном, когда службы должны отправлять данные?

ВсеИнформация очень ценится, так как я все это немного поражаюсь!

Большое спасибо всем заранее!

1 Ответ

8 голосов
/ 03 августа 2011

Услугу можно отключить в любое время через меню настроек. Он также может быть в любой момент убит Android, если решит, что ему нужны ресурсы для текущей работы. onDestroy() будет вызываться независимо, поэтому используйте его для хранения всего необходимого.

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

В любой момент времени может быть только одна работающая версия сервиса. Однако вызов startService(myService), если "myService" уже запущен, по существу переопределит текущую работающую службу, и onStartCommand() будет вызван снова. Однако для его остановки требуется один вызов stopService(myService), независимо от того, сколько раз был вызван startService(myService).

stopService(myService) не остановит службу, если служба связана с чем-либо. Он будет ждать, пока все привязки будут удалены, прежде чем служба остановится.

...