Нужно ли привязывать каждое действие к сервису и что происходит, когда он был создан с помощью startService () - PullRequest
0 голосов
/ 16 февраля 2011

У меня есть служба, которая должна поддерживать постоянное соединение с контроллером домашней автоматизации (HAC).В настройках Приложения я предоставлю Пользователю возможность оставаться ** подключенным к HAC или отбросить соединение с HAC, когда Приложение не используется.Я намереваюсь использовать startService (), чтобы проверить, нужно ли вызывать stopSelf () из Службы.

У меня два вопроса:

  1. Нужно ли привязываться к сервису из каждой активности в приложении?(Я обнаружил, что onBind (), кажется, не выполняется после того, как моя активность SplashScreen была запущена и привязана к службе).Я даже закомментировал вызов bindService () из Activity, и я все еще могу использовать вызовы Service.Я надеялся использовать обратный вызов onBind (), чтобы проверить, есть ли у Службы действительное соединение с HAC.

  2. Если я использую startService (), а затем bindService ();Будет ли unBindService () разрешить остановку службы, если нет других связанных объектов?Кроме того, если я запускаю службу с bindService (), а затем впоследствии вызываю startService ();что просходит?Я пытаюсь понять, как эти два подхода к взаимодействию с Сервисом влияют на жизненный цикл.

Спасибо, J

** Я понимаю, что это может нанести вред батареежизнь, но иногда приятно, когда NotificationManager сообщает, что детектор движения на вашем переднем крыльце только что сработал.

1 Ответ

3 голосов
/ 16 февраля 2011

У меня есть служба, которая должна поддерживать постоянное соединение с контроллером домашней автоматизации (HAC). В настройках Приложения я предоставлю Пользователю возможность оставаться ** подключенным к HAC или отбросить соединение с HAC, когда Приложение не используется. Я намереваюсь использовать startService (), посмотрев на предпочтения, чтобы узнать, нужно ли вызывать stopSelf () из Сервиса.

Это очень рациональный и разумный подход - пусть пользователь контролирует, как используется его устройство. Престижность!

Нужно ли привязываться к сервису из каждой активности в приложении?

Нет необходимости привязывать к сервису какие-либо действия в приложении, если вы используете startService() для его запуска.

Я надеялся использовать обратный вызов onBind (), чтобы проверить, имеет ли Служба действительное соединение с HAC.

В частности, для облегченных, доступных только для чтения, проблем, не связанных с GC, таких как состояние соединения, я бы просто вставил их в статический элемент данных. Теперь, если вам нужен более сложный API, чем этот, вам понадобится связывание, но связывание - это боль в различных частях тела, когда речь идет об изменениях конфигурации (например, поворот экрана).

Если я использую startService (), а затем bindService (); unBindService () затем разрешит остановку службы, если нет других связанных объектов?

Нет, startService() будет держать его независимо от unbindService().

Кроме того, если я запускаю службу с помощью bindService (), а затем впоследствии вызываю startService (); что происходит?

Ммм ... Вы можете быть более конкретным? Я имею в виду, что я чувствую себя достаточно комфортно, говоря, что ваша последовательность событий не вызовет разрыва в пространственно-временном континууме и не заставит меня самопроизвольно отрастить волосы. : -)

...