Мое приложение имеет одну услугу и набор действий.
Каждое действие охватывает небольшую задачу (например, попросить пользователя вставить номер или текст или выразить предпочтение).
Служба запускает действия или поднабор действий.
Порядок, в котором служба начинает изменения активности в дневные часы.
Но каждый раз служба должна ждать окончания действия (для получения результата активности) перед запуском следующего действия.
Моя идея заключалась в использовании вызова wait()
в сервисе между двумя действиями.
Каждое действие использует sendBroadcast для возврата результата в BroadcastReceiver
.
BroadcastReceiver
выполняет notify()
, чтобы освободить службу и перенаправляет результат активности в службу.
Очевидно, что эта идея не работает. Проблемы:
1) Запуск многих действий из службы дает мне проблему, связанную с Задачей, к которой относится каждая деятельность.
2) Я не знаю, как передать информацию из BroadcastReceiver
в Service
(в первый раз я объявил BroadcastReceiver
внутри класса Service
, но когда служба ввела wait()
процесс остается заблокированным и BroadcastReceiver
никогда не получает).
Пожалуйста, я принимаю все предложения. Может быть, изменение архитектуры приложения?
Спасибо
Обычно поток представляет собой одно действие, запускающее следующий. Вы должны перепроектировать так, чтобы, когда вы готовы к завершению() activity1, вы уже знаете, что такое Activity2, и вы начинаете его с Activity1. Возможно, ваша служба должна выставить метод, который ваши действия могут вызвать, чтобы получить определение, которое должно быть следующим действием. Это нормально, так как Сервисы и действия выполняются в одном процессе и могут звонить друг другу.