Допустим, у меня есть запущенная служба Android, которая выполняет некоторые задачи, как в этом примере:
-Сервис запускается
-Приходит задача A, выполняет задачу B, затем загружает файл 1, загружает файл 2,и, наконец, выполняет задачу C.
-Сервис останавливается
Скажем, когда служба выполняет задачу B, с ней связывается действие. Как правильно проверить, какую задачу выполняет служба для обновления пользовательского интерфейса в данный момент?
Теперь я делаю то, что создаю логический флаг для каждой задачи во время выполнения, а затем, когда действиепривязывается к сервису, который проверяет, какой флаг имеет значение true, чтобы отправить правильный обратный вызов в действие. Это работает, но с большим количеством задач становится все сложнее и сложнее, когда возникают ошибки.
private boolean doingTaskA = false;
private boolean doingTaskB = false;
.
.
public void doTaskA() {
// Task started, set the flag to true.
doingTaskA = true;
// send callback to update activity UI.
callback.onDoingTaskA();
// doing some API calls that takes some time to retrieve information
...
// Task finished, set to false.
doingTaskA = false;
}
public void doTaskB() {
// Task started, set the flag to true.
doingTaskB = true;
// send callback to update activity UI.
callback.onDoingTaskB();
// doing some API calls that takes some time to retrieve information
// while doing in background, an activity binds to this service (assuming
// not already bound).
...
// Task finished, set to false.
doingTaskB = false;
}
public IBinder onBind(Intent intent) {
// when binding check to see what the service is doing.
if(doingTaskA){
// send callback to update activity UI.
callback.onDoingTaskA();
}
if(doingTaskB){
// send callback to update activity UI.
callback.onDoingTaskB();
}
...
}
Пожалуйста, помогите мне с эффективным и надежным способом сделать это.
Спасибо!