AsyncTask – как дождаться завершения onPostExecute () перед использованием значений, которые он обновил

У меня есть API в одном банке, который использует AsyncTask для выполнения некоторой работы в фоновом режиме. Мне нужно дождаться, когда результат будет возвращен, а затем сделайте еще немного вока с этим результатом.

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

Во втором проекте мне нужно дождаться завершения AsyncTask. И для ответа, который нужно обработать, мне нужно отобразить результаты обработчика TextView в действии во втором проекте.

Thread.sleep и использование CountDownLatch не работают, потому что обработка выполняется в потоке пользовательского интерфейса. Есть ли способ сделать такое?

Если я правильно понимаю, у вас есть AsyncTask в одной банке и пользовательском интерфейсе, которые необходимо обновить в другой банке. Если вы запускаете их как одно приложение, не имеет значения, где они находятся. Поскольку вы упомянули о некотором onPostExecute вы можете просто выполнить этот обратный вызов в onPostExecute .

Ниже приведена приблизительная последовательность событий

  • Активность из jar 2 создает асинхронную задачу и передает обратный вызов, который знает, как обновлять TextView качестве параметра для конструктора
  • AsyncTask хранит обратный вызов в переменной экземпляра
  • Активность выполняет AsyncTask
  • AsyncTask в onPostExecute вызывает метод при onPostExecute с соответствующими параметрами
  • Обновления обратного вызова TextView
Intereting Posts