Как проверить, что в данный момент делает сервис андроид, привязываясь к нему? - PullRequest
0 голосов
/ 11 октября 2019

Допустим, у меня есть запущенная служба 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();
  }
  ...
}

Пожалуйста, помогите мне с эффективным и надежным способом сделать это.

Спасибо!

...