2013-02-20 2 views
2

У меня есть служба S, которая начинается при загрузке. У этого есть контент-сервер C, который запускает intenservice X для выполнения некоторой обработки. Деятельность по умолчанию A запускается пользователем.Привязка к запущенной службе в android

Я хочу знать, если это возможно, чтобы связать с запущенного сервиса S без его остановки, так что я могу передать на resultreceiver R к S, что в свою очередь, должен быть передан на X.

Я хочу для этого, чтобы я мог снова запустить X, на этот раз свободный от C, от связанной службы S с R в качестве дополнительного дополнения. Через R, диалог прогресса обновляется в A всякий раз, когда он запускается.

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

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

Есть ли другой способ решения этой проблемы? Моя проблема может быть решена, если есть способ обновить уведомление, построив его снова.

Я использую сборку 4.1.1, API 16, в которой setlatesteventinfo кажется устаревшим.

Я все еще готов вернуться к идее обновления текущего уведомления. Или другое обходное решение. Любая помощь будет оценена по достоинству.

EDIT:

Использование уведомлений является способом реализации этого приложения, в котором не было бы никакой необходимости в resultreceiver и ibinder интерфейсов.

Я не могу найти setlatesteventinfo на уровне API 16. Я пытаюсь использовать библиотеку поддержки v4. В моей реализации я создаю новое уведомление для каждой итерации цикла. Но я не понял способ сохранить звуковой сигнал в первый раз, а не для остальных. Кто-нибудь преуспел в надлежащем обновлении уведомления?

+0

Да, просто позвоните в службу bindService. –

+0

Будет ли снова называться услугой? –

+0

Я так думаю, это то, где вы можете вернуть обработчик служебных сообщений. –

ответ

6

Я хочу знать, если это возможно, чтобы связать с запущенным сервисом S без его остановок

Это, конечно, возможно. Как отметил Хоан, вам нужно вызвать bindService() из вашей активности. This article имеет пример кода, как это сделать.

Что касается остальной части вашего вопроса, похоже, его можно разбить на несколько новых вопросов. Это очень сложно понять и ответить всем сразу.

1

андроид документация на Bound Services говорит:

Третий параметр представляет собой флаг, указывающий параметры для связывания. Для создания сервиса обычно должен быть BIND_AUTO_CREATE, если он еще не жив.

По-прежнему необходимо подтвердить, что функция onCreate() службы S еще не вызвана.

Смежные вопросы