Синхронизация активности - PullRequest
1 голос
/ 07 апреля 2011

Мое приложение имеет один сервис и набор действий.

Каждое действие охватывает небольшую задачу (например, попросить пользователя ввести число, или текст, или выразить предпочтение).

Служба запускает действия или поднабор действий.

Порядок, в котором служба запускает действия, меняется с учетом часов дня.

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

Моя идея состояла в том, чтобы использовать вызов wait() вслужба между выполнением двух действий.

Каждое действие использует sendBroadcast для возврата результата в BroadcastReceiver.

BroadcastReceiver выполняет notify() для освобождения службы и пересылкирезультат деятельности к сервису.

Очевидно, эта идея не работает.Проблемы:

1) При запуске многих действий из службы возникает проблема, связанная с задачей, к которой относится каждая деятельность.

2) Я не знаю, как передать информацию из BroadcastReceiver в Service (впервые я объявил BroadcastReceiver в классе Service, но когда служба вошлаwait() процесс остается заблокированным и BroadcastReceiver никогда не получает).

Пожалуйста, я принимаю любые предложения.Может быть, изменение в архитектуре приложения?

Спасибо

1 Ответ

0 голосов
/ 22 ноября 2011

Обычно поток представляет собой одно действие, вызывающее следующее.Вы должны изменить архитектуру, чтобы, когда вы будете готовы завершить () действие 1, вы уже знали, что такое действие 2, и начали его с действия 1.Возможно, ваш сервис должен предоставить метод, который ваши действия могут вызвать, чтобы получить определение, которое должно быть следующим.Это нормально, поскольку службы и действия выполняются в одном и том же процессе и могут вызывать друг друга.

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